二叉树 中序遍历 python_leetcode No.105 从前序与中序遍历序列构造二叉树
题目链接:
从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)leetcode-cn.com
题目描述:
根据一棵树的前序遍历与中序遍历构造二叉树,可以假设树中没有重复的元素。
示例:
前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7]
返回如下的二叉树:
3/ 9 20/ 15 7
解题思路:
首先观察一下,已知前序和中序遍历二叉树的列表,现在要重建出原始的二叉树。我们都知道二叉树的根节点一定出现在前序遍历列表的首位,即本题样例中的 3。而根节点的左子树包含的元素到什么地方为止呢。可以观察到中序遍历中 3 是第二个元素,说明 3 左边的 9 在根节点的左子树当中。而 15,20,7 位于根节点的右子树中。而前序 [20,15,7],和中序 [15,20,7] 又构成了一个子树的遍历。可以用递归法求解。
递归法的关键是找到边界,和递推规则。本题的边界需要返回空节点,即在原始列表中得到一个长度为零的子列表,说明已经到了叶节点。而递推规则最关键是找到前序列表的首位元素在中序列表中的位置,将其分割为两段,再分别构建。如果使用的是C++,需要几个变量储存当前子列表的首尾位置。
代码如下:
class
如果本题解出来了,相信它的姐妹问题 leetcode No.106 从中序与后序遍历序列构造二叉树肯定也是迎刃而解了。如果有需要,大家可以自己练练手,链接如下:
从中序与后序遍历序列构造二叉树 - 力扣(LeetCode)leetcode-cn.com
如果有任何疑问,欢迎提出。如果有更好的解法,也欢迎告知。
二叉树 中序遍历 python_leetcode No.105 从前序与中序遍历序列构造二叉树相关推荐
- 二叉树 中序遍历 python_LeetCode 105 树 从前序与中序遍历序列构造二叉树(Medium)
17(105) 从前序与中序遍历序列构造二叉树(Medium) 描述 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 示例 例如,给出前序遍历 preorder = ...
- 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)
引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程: 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导 ...
- [Leedcode][JAVA][第105题][从前序与中序遍历序列构造二叉树][栈][递归][二叉树]
[问题描述][中等] 根据一棵树的前序遍历与中序遍历构造二叉树.注意: 你可以假设树中没有重复的元素.例如,给出前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = ...
- 【LeetCode】【HOT】105. 从前序与中序遍历序列构造二叉树(哈希表+递归)
[LeetCode][HOT]105. 从前序与中序遍历序列构造二叉树 文章目录 [LeetCode][HOT]105. 从前序与中序遍历序列构造二叉树 package hot;import java ...
- 【必拿下系列】106. 从中序与后序遍历序列构造二叉树105从前序与中序遍历序列构造二叉树
两题各自的链接放这里了: 链接: 106 链接: 105 106.从中序与后序遍历序列构造二叉树 如果你是不知道理论的,那就得仔细分析了, 举个例子: 输入:inorder = [9,3,15,20, ...
- 72.编辑距离105.前序中序遍历序列构造二叉树151.翻转字符串里的单词104.二叉树的最大深度76.最小覆盖子串110.平衡二叉树31.下一个排列
72.编辑距离 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 .你可以对一个单词进行如下三种操作:插入一个字符,删除一个字符,替换一个字符. ...
- LeetCode 刷题之旅(2020.05.22)——105. 从前序与中序遍历序列构造二叉树(中)
LeetCode 刷题之旅(2020.05.22)--105. 从前序与中序遍历序列构造二叉树(中) 题目: 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如, ...
- 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...
- java用中根后根序列构造二叉树,106. 从中序与后序遍历序列构造二叉树
题目描述 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 示例: 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder ...
最新文章
- 剑指offer:面试题14- II. 剪绳子 II
- OSPF有五种报文,hello,dd,lsr,lsu,lsack
- 大三Java实习总结网易百度小米美团阿里(均拿offer)
- 函数调用的方法一共有 4 种,call,apply,bind
- 让PasswordRecovery控件使用Email地址找回密码
- 2022年全球及中国商用多旋翼无人机行业十四五战略目标与发展方向分析报告
- rbac权限管理5张表_PHP之常用的RBAC权限管理详解
- 17.3.12---urlparse模块的URL下载
- php 仿高德,仿高德路线规划滑动效果
- 数据结构算法题整理3
- 基于链队列的银行叫号系统
- jsp实现登录验证码
- 每天做好一件事,坦然微笑地面对生活
- 小明一家过桥_「小明一家人过桥问题」如何用编程解决?
- 读书笔记:我们为什么上班
- mysql日期相减返回秒_mysql两个日期相减得到秒、分、天
- iPhone开发Blog
- 华为招聘实习生~base深圳,坂田总部
- 商业分析能力是怎样炼成的?
- Social-STGCNN: A Social Spatio-Temporal GCNN for Human Trajectory Prediction(CVPR2020)论文阅读笔记
热门文章
- python有哪些用途-python的主要用途是什么
- python是什么-马哥教育官网-专业Linux培训班,Python培训机构
- 用python画玫瑰花-使用Python画一朵玫瑰花
- 零基础学python全彩版答案-零基础学Python(全彩版)
- 谷歌云端语音识别软件
- ASR识别(自动语音识别)
- 后端ajaxPost请求传给前端的显示乱码问题
- 第D题 把手放在键盘上时,稍不注意就会往右错一位。
- 收文处理和发文处理的环节_液相色谱使用中样品预处理需要注意的几个环节汇总!...
- python计算空类型_python的变量 类型和存储