重建二叉树
来源:互联网 发布:长沙网络推广 编辑:程序博客网 时间:2024/05/18 07:24
题目描述:
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
答案:
答案思路:
前序遍历中第一个元素为二叉树的root,在中序遍历中找到root,左边是左子树,右边是右子树,例子中1左边2,4,7为左子树,1右边3,5,6,8为右子树。再回到前序遍历中,2作为左子树的第一个元素,以2为分界在中序遍历中找左右子树,可以看到只有左子树4,7。再回到前序遍历中,4作为左子树的第一个元素,在中序中找到4,可以看到只有右子树7,以此类推可以分析出以1为root的右子树的结构。
class Solution: 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
- 3.9重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 二叉树的重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- Windows系统环境变量、JAVA环境变量配置以及JVM加载过程
- c# md5加密算法实例
- retrofit2.adapter.rxjava.HttpException: HTTP 500 Internal Server Error
- 307. Range Sum Query
- PHP之图片上传
- 重建二叉树
- CSS样式初始化代码
- mstsc 远程命令
- C/C++之回调函数
- 普通员工与优秀员工的区别
- Spring 事务管理
- Mac电脑使用:通过Mac电脑导出iPhone手机里面的视频(不是iTunes导出视频的方法)
- 单例模式之懒汉模式--Java实现
- SOA技术相关介绍(RPC, Web Service, REST,SOAP,JMI)