leetcode 106. 从中序与后序遍历序列构造二叉树(python)
根据一棵树的中序遍历与后序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。
例如,给出
中序遍历 inorder = [9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]
返回如下的二叉树:
3
/ \
9 20
/ \
15 7
递归
class Solution(object):
def buildTree(self, inorder, postorder):
# 递归
if not inorder or not postorder:
return None
root = TreeNode(postorder.pop())
inorder_index = inorder.index(root.val)
root.right = self.buildTree(inorder[inorder_index+1:], postorder)
root.left = self.buildTree(inorder[:inorder_index], postorder)
return root