Reconstruct
class Solution(object):
def buildTree(self, preorder, inorder):
if not preorder or not inorder:
return None
root = TreeNode(preorder.pop(0))
idx = inorder.index(root.val)
root.left = self.buildTree(preorder, inorder[:idx])
root.right= self.buildTree(preorder, inorder[idx+1:])
return root
class Solution(object):
def buildTree(self, inorder, postorder):
if not inorder or not postorder:
return None
root = TreeNode(postorder.pop())
inorderindex = inorder.index(root.val)
root.right= self.buildTree(inorder[inorderindex+1:], postorder)
root.left = self.buildTree(inorder[:inorderindex], postorder)
return root