106、根据中序遍历和后序遍历重构二叉树

2018-07-27  本文已影响0人  小碧小琳

这道题跟105题思路是一样的:

代码注意事项:
1、index是list方法,应该是L.index(item)调用,其中item是需要被确定索引位置的元素。
2、root是节点类实例,需要调用类实现。
3、若是想要返回节点的值,那么只需要Node.val即可。不要在val后面加括号。

代码:

# 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, inorder, postorder):
        """
        :type inorder: List[int]
        :type postorder: List[int]
        :rtype: TreeNode
        """
        if len(inorder) == 0 and len(postorder) == 0:
            return None
        root = TreeNode(postorder[-1])
        #在这地方出了错。。index中传入的应该是postorder[-1]而不是root
        index = inorder.index(postorder[-1])
        root.left = self.buildTree(inorder[0:index],postorder[0:index])
        root.right = self.buildTree(inorder[index+1:],postorder[index:-1])
        return root
上一篇 下一篇

猜你喜欢

热点阅读