美文网首页
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.重构二叉树

    题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复...

  • 二叉树code

    二叉树遍历 前序,中序,后序任选两个重构二叉树

  • 根据前序、中序遍历重构二叉树

    定义节点类型 重构二叉树 测试 分析 前序遍历:12473568中序遍历:47215386 重构过程: 前序遍历中...

  • 项目重构-理论

    项目重构 1.重构-方法论 1.全部推翻,从头开始 2.以迭代的方式重构 2.什么时候应该重构 维护时投入/产出比...

  • 重构

    为何重构? 1.重构改进软件设计 2.重构使软件更容易理解 3.重构帮助找到bug 4.重构提高编程速度 何时重构...

  • 《重构》一书经典总结(一)

    《重构》一书经典总结(一) 为何重构 1.重构改进软件设计2.重构使软件更容易理解3.重构提交稿编程速度4.重构帮...

  • 重构二叉树

    重构二叉树 题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中...

  • 数据结构与算法之二叉树遍历(七)

    目录 前序遍历中序遍历后序遍历层序遍历遍历方式的选择条件根据遍历结果重构二叉树翻转二叉树计算二叉树的高度判断一棵树...

  • 栈-N331-验证二叉树的前序序列化

    题目 概述:给定二叉树的前序遍历列表,判断它是否是合理的要求:不能重构树 输入:二叉树的前序遍历字符串,用","分...

  • 12.树Tree(2)

    目录:1.二叉树的基本概念2.二叉树的性质3.二叉树的创建4.二叉树的遍历 1.二叉树的基本概念 2.二叉树的性质...

网友评论

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

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