重建二叉树

重建二叉树

http://www.nowcoder.com/questionTerminal/8a19cbe657394eeaac2f6ea9b0f6fcf6

python3
采用递归思想,思路:由前序遍历可知第一个节点即为根结点,然后将此节点对应在中序节点的位置将中序遍历分为左右子树,重新得到子树的前序,中序遍历,依次递归给下一层.

class Solution:
    # 返回构造的TreeNode根节点
    def reConstructBinaryTree(self, pre, tin):
        # write code here
        if len(tin) == 0:
            return None
        root = TreeNode(pre[0])            #前序遍历第一个值为根节点
        index = tin.index(root.val)        #因为没有重复元素,所以可以直接根据值来查找根节点在中序遍历中的位
        root.left = self.reConstructBinaryTree(pre[1:index+1],tin[:index])
        root.right = self.reConstructBinaryTree(pre[index+1:],tin[index+1:])
        return root
全部评论

相关推荐

吃不饱的肱二头肌很想退休:tnnd 我以为选妹子呢,亏我兴高采烈的冲进来😠
投递快手等公司10个岗位
点赞 评论 收藏
分享
11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
5 收藏 评论
分享
牛客网
牛客企业服务