# 给定一棵二叉树的前序遍历和中序遍历,求其后序遍历
class TreeNode():
def __init__(self, data):
self.data = data
self.leftChild = None
self.rightChild = None
def PostOrder(self):
if self.leftChild != None:
self.leftChild.PostOrder()
if self.rightChild != None:
self.rightChild.PostOrder()
print(self.data, end='')
def getTree(PreSeq, InSeq):
if PreSeq=='':
return None
elif len(PreSeq)==1:
return TreeNode(PreSeq)
data = PreSeq[0]
idx = InSeq.index(data)
root = TreeNode(data)
leftInSeq, rightInSeq = InSeq[:idx], InSeq[idx+1:]
lenLeft, lenRight = len(leftInSeq), len(rightInSeq)
leftPreSeq, rightPreSeq = PreSeq[1:lenLeft+1], PreSeq[lenLeft+1:]
root.leftChild, root.rightChild = \
getTree(leftPreSeq, leftInSeq),getTree(rightPreSeq, rightInSeq)
return root
try:
while True:
PreSeq = input().strip()
InSeq = input().strip()
root = getTree(PreSeq,InSeq)
root.PostOrder()
print()
except:
pass
KY212 二叉树遍历
最新推荐文章于 2024-09-29 14:13:49 发布