输入某二叉树的前序遍历和中序遍历的结果,重建此二叉树。
来源:互联网 发布:中俄列车大劫案知乎 编辑:程序博客网 时间:2024/06/06 14:01
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
比如我们知道一二叉树的前序遍历和中序遍历,要求画出这棵树。
前序遍历为1,2,4,7,3,5,6,8
中序遍历为4,7,2,1,5,3,8,6
可以初步确定树的结构如下:
生成树的具体过程如下:
如果理解了递归的访问,那么建树的过程就容易多了,前序遍历序列的第一个数(后序遍历的最后一个数)一定是根结点,所以可以根据此结点在中序序列中的位置把中序序列分为左子树和右子数两个部分,同样的道理,在左子树和右子数中同样可以用到这样的规律来确定每个中间结点。
# -*- coding:utf-8 -*-class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: # 返回构造的TreeNode根节点 def reConstructBinaryTree(self, pre, tin): # write code here if len(pre) == 0: return None if len(pre) == 1: return TreeNode(pre[0]) else: flag = TreeNode(pre[0]) flag.left = self.reConstructBinaryTree(pre[1:tin.index(pre[0])+1],tin[:tin.index(pre[0])]) flag.right = self.reConstructBinaryTree(pre[tin.index(pre[0])+1:],tin[tin.index(pre[0])+1:] ) return flag
阅读全文
0 0
- 输入某二叉树的前序遍历和中序遍历的结果,重建此二叉树。
- 输入某二叉树的前序和中序遍历结果,重建该二叉树
- 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- 输入某二叉树的前序遍历和中序遍历的结果,重建该二叉树
- 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- 输入某二叉树的前序遍历和中序遍历的结果请重建出该二叉树。
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- 重建二叉树,输入某二叉树的前序遍历和中序遍历的结果,重建出二叉树,假设输入的前序和中序遍历结果中不含重复的数字
- 根据二叉树的前序遍历和中序遍历的结果,重建二叉树
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
- 输入二叉树的前序遍历和中序遍历,重建出该二叉树
- 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- java 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- awk的使用及字符串的操作
- 关于vue.js项目
- lamp安装教程
- TLS/SSL 协议详解(15) client certificate
- cookie是什么?
- 输入某二叉树的前序遍历和中序遍历的结果,重建此二叉树。
- Android创建自定义复合控件
- 学生总结(四)----代码的优化与理解
- Builder模式
- java 基础五 -- 数组
- Android studio 3.0 Beta 2 导入eclipse项目遇到的问题
- XCODE8 API文档解析
- nyoj 1058部分和问题
- MUI 请求的页面无法打开 viewgroup 报错