题目描述:
根据一棵树的中序遍历与后序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。
例如,给出
中序遍历 inorder = [9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]
返回如下的二叉树:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def buildTree(self, inorder, postorder):
"""
:type inorder: List[int]
:type postorder: List[int]
:rtype: TreeNode
"""
#思路:根据后序找到根节点,根据中序对左右子树进行区分
if len(inorder) == 0 or len(postorder) == 0:
return
else:
root = TreeNode(postorder[-1])
index_ = inorder.index(root.val)
print
left_inorder,left_postorder = inorder[:index_],postorder[:index_]
right_inorder,right_postorder = inorder[index_+1:],postorder[index_:-1]
root.left = self.buildTree(left_inorder,left_postorder)
root.right = self.buildTree(right_inorder,right_postorder)
return root
菜鸟一枚,代码仅供参考,如有问题,望指正~