python:重建二叉树
描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。
例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。提示:
1.vin.length == pre.length
2.pre 和 vin 均无重复元素
3.vin出现的元素均出现在 pre里
4.只需要返回根结点,系统会自动输出整颗树做答案对比 数据范围:n \le 2000n≤2000,节点的值 -10000 \le val \le 10000−10000≤val≤10000 要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)示例1 输入: [1,2,4,7,3,5,6,8],[4,7,2,1,5,3,8,6] 返回值:{1,2,3,4,#,5,6,#,7,#,#,8} 说明:返回根节点,系统会输出整颗二叉树对比结果,重建结果如题面图示
示例2 输入:[1],[1] 返回值:{1}
示例3 输入:[1,2,3,4,5,6,7],[3,2,4,1,6,5,7] 返回值:{1,2,5,3,4,6,7}
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param pre int整型一维数组
# @param vin int整型一维数组
# @return TreeNode类
#
class Solution:def reConstructBinaryTree(self , pre: List[int], vin: List[int]) -> TreeNode:# write code herem = len(pre)n = len(vin)if m == 0 or n == 0:return Noneroot = TreeNode(pre[0])for i in range(len(vin)): if vin[i] == root.val:leftpre = pre[1:i+1]leftvin = vin[0:i]root.left = self.reConstructBinaryTree(leftpre, leftvin)rightpre = pre[i+1:m]rightvin = vin[i+1:n]root.right = self.reConstructBinaryTree(rightpre, rightvin)return root
python:重建二叉树相关推荐
- python实现二叉树的重建2 之由中序遍历和后序遍历重建
前言 通过上一节对python实现二叉树的重建1 之由前序遍历和中序遍历重建,我相信我们再来做这个问题就不难了,完全可以照猫画虎的来实现,具体的原理几乎是一样的,直接上代码了 code # 通用解法d ...
- python根据二叉树的前序遍历和中序遍结果历重建二叉树
python根据二叉树的前序遍历和中序遍结果历重建二叉树 前序遍历 对于当前节点,先输出该节点,然后输出他的左孩子,最后输出他的右孩子.以上图为例,递归的过程如下: (1):输出 1,接着左孩子: ( ...
- 用前序和中序重建二叉树 python
程序实现了用二叉树的前序遍历序列和中序遍历序列重建二叉树,代码用python实现. 首先定义二叉树节点的类: 1 class TreeNode: 2 def __init__(self, x): 3 ...
- 剑指offer_第4题_重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果 请重建出该二叉树 假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- 【剑指offter】重建二叉树
题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7 ...
- 剑指offer第7题 重建二叉树
前言 该系列文章为本人刷leetcode的记录,主要旨在分享刷题的思路及算法解析(尽可能的一题多解),另方便自己日后查阅回顾.代码的实现语言是python和go. 想进大厂免不了刷题,一起加油吧,小伙 ...
- 剑指offer:面试题07. 重建二叉树
题目: 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如,给出 前序遍历 preorder = [3,9,20,15,7 ...
- 根据二叉树的前序遍历和中序遍历重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- python判断二叉树是否为平衡二叉树
python判断二叉树是否为平衡二叉树 树是数据结构中的重中之重,尤其以各类二叉树为学习的难点.一直以来,对于树的掌握都是模棱两可的状态,现在希望通过写一个关于二叉树的专题系列.在学习与总结的同时更加 ...
最新文章
- js,jquery 根据对象某一属性进行排序
- 只用一张图+相机走位,AI就能脑补周围环境,来自华人团队 | CVPR2022
- 【机器学习算法-python实现】svm支持向量机(3)—核函数
- 台湾大学林轩田机器学习基石课程学习笔记10 -- Logistic Regression
- 剑指Offer名企面试官精讲典型编程题pdf
- 使用Guava retryer优雅的实现接口重试机制
- 大写的“极简” H3C MSG360系列网关
- [转]淘宝sdk——入门实战之header.php制作(二)
- 优秀的UI/UX设计师需要具备哪些技能?
- 3D游戏建模概念设计流程
- 北美周末票房榜TOP10 (06.21-23)
- php把十二生肖排列,12生肖怎么排 十二生肖如何排序
- Arduino控制RGB灯(WS2812B)
- Kdevelop安装与使用说明
- 014 Rust死灵书之显式类型转换
- spotify 缓存_如何在Spotify中获得最佳音质
- php 获取用户的IP
- 如何理解深度学习中的tensor(涉及numpy的二维,三维以及四维数据的理解)
- 在网页中加入Flash的代码
- java计算机毕业设计消防网站源码+系统+数据库+lw文档+mybatis+运行部署