美文网首页
2.重构二叉树

2.重构二叉树

作者: 你好宝宝 | 来源:发表于2020-03-08 22:33 被阅读0次

    题目描述

    输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

    代码

    
    class TreeNode:
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None
    
    
    def reconstruct(pre,pre_start,pre_end,tin,tin_start,tin_end):
        if pre_start <= pre_end:
            root=TreeNode(pre[pre_start])
        else:
            root=None
    
        for i in range(tin_start,tin_end+1):
            if tin[i]==pre[pre_start]:
                length=i-tin_start
                root.left=reconstruct(pre,pre_start+1,pre_start+length,tin,tin_start,i-1)
                root.right=reconstruct(pre,pre_start+length+1,pre_end,tin,i+1,tin_end)
                break
            
        return root
          
    pre=[1,2,4,7,3,5,6,8]
    tin=[4,7,2,1,5,3,8,6]
    root=reconstruct(pre,0,len(pre)-1,tin,0,len(tin)-1)
    print(root.left)
    

    相关文章

      网友评论

          本文标题:2.重构二叉树

          本文链接:https://www.haomeiwen.com/subject/tidsdhtx.html