• 剑指offer-7.重建二叉树


    题目描述

    输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
    解题思路:
    1.前序遍历序列的第一个就是根节点
    2.找到根节点在对应中序遍历节点中的位置,中序遍历中根节点前面的序列就是左子树的中序遍历,同理,后面的部分就是右子树的中序遍历
    3.得到左右子树的中序遍历,按照他们中序遍历序列的个数可以求出对应的前序遍历
    4.不断重复这个过程,可以采用递归的方法去实现
     1 class Solution:
     2     # 返回构造的TreeNode根节点
     3     def reConstructBinaryTree(self, pre, tin):
     4         # write code here
     5         if set(pre)!=set(tin):
     6             return None
     7         if not pre or not tin:
     8             return None
     9         root=TreeNode(pre[0])
    10         p=tin.index(pre[0])
    11         root.left=self.reConstructBinaryTree(pre[1:p+1],tin[:p])
    12         root.right=self.reConstructBinaryTree(pre[p+1:],tin[p+1:])
    13         return root
  • 相关阅读:
    两指针--减少数组循环
    python与正则表达式
    python 获取网页图片
    python学习 第一天
    jquery中的基本理解以及样式属性操作
    webapi中的三大家族
    BOM中的其他对象以及短路运算
    BOM中的api
    事件冒泡和事件捕获
    webapi中注册事件以及解绑事件
  • 原文地址:https://www.cnblogs.com/wanrongshu/p/12767591.html
Copyright © 2020-2023  润新知