Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
For example, given
preorder = [3,9,20,15,7]
inorder = [9,3,15,20,7]
Return the following binary tree:
3
/
9 20
/
15 7
第一次的代码:
直接递归了,根据前序和中序找到root及其位置,然后分割左树右树继续递归
def c(p,i):
if not p:#当该节点p,i空,即空节点
return None
root=TreeNode(p[0])#建立树
index=i.index(p[0])#寻找中序root节点位置
root.left=c(p[1:index+1],i[:index])#构建左树
root.right=c(p[index+1:],i[index+1:])
return root
return c(preorder,inorder)
#188ms,排名42%
#根据前序和中序找到root及其位置,然后分割左树右树继续递归
188ms,排名42%