105.Construct Binary Tree from Preorder and Inorder Traversal
阿新 • • 發佈:2018-11-07
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
# Definition for a binary tree node. class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution: def buildTree(self, preorder, inorder): """ :type preorder: List[int] :type inorder: List[int] :rtype: TreeNode """ if not len(preorder) or not len(inorder): return None root = TreeNode(preorder[0]) pos = inorder.index(root.val) inorderleft,inorderright = inorder[:pos],inorder[pos+1:] preorderleft,preorderright = preorder[1:1+len(inorderleft)],preorder[1+len(inorderleft):] root.left = self.buildTree(preorderleft,inorderleft) root.right = self.buildTree(preorderright,inorderright) return root