class TreeNode():
def __init__(self,val,left=None,right=None):
self.val=val
self.left=left
self.right=right
def pre_print(root):#前序遍历二叉树输出
if root==None:
return
else:
print(root.val,end=" ")
pre_print(root.left)
pre_print(root.right)
def restruct_tree(pre_order, in_order):#恢复二叉树
# 排出两种特殊情况
if len(pre_order) == 0:
return None
elif len(in_order) == 1:
return TreeNode(in_order[0])
else:
root = pre_order[0]
depth = in_order.index(root)
temp = TreeNode(root)
temp.left = restruct_tree(pre_order[1: depth + 1], in_order[: depth])
temp.right = restruct_tree(pre_order[depth + 1:], in_order[depth + 1:])
return temp
pre_order=['A','B','C','D','E','F','G']#前序
in_order=['C','B','D','A','E','G','F']#中序
temp=restruct_tree(pre_order,in_order)
pre_print(temp)
输出结果:
A B C D E F G