Leetcode 106.从中序与后序遍历序列重建二叉树
Time: 20190901
Type: Medium
题目描述
根据一棵树的中序遍历与后序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。
例如,给出
中序遍历 inorder = [9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]
返回如下的二叉树:
3/ \9 20/ \15 7
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
和由前序 + 中序遍历序列构造二叉树相似。
代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = Noneclass Solution:def buildTree(self, inorder: List[int], postorder: List[int]) -> TreeNode:def helper(inorder, inL, inR, postorder, pL, pR):if pL >= pR or inL >= inR:return NonerootVal = postorder[pR - 1]print(rootVal)root = TreeNode(rootVal)k = -1 # 划分中序序列for i in range(inL, inR):if inorder[i] == rootVal:k = ibreakleftSize = k - inLroot.left = helper(inorder, inL, k, postorder, pL, pL + leftSize) root.right = helper(inorder, k + 1, inR, postorder, pL + leftSize, pR - 1) # 注意此时pR-1指向的是当前层的根,也即右子树的外边界return rootreturn helper(inorder, 0, len(inorder), postorder, 0, len(postorder))
遇到递归爆栈情况,要注意进入边界设定是否正确,如# pR-1 #.
END.
Leetcode 106.从中序与后序遍历序列重建二叉树相关推荐
- 通过层序和中序遍历序列重建二叉树
在学二叉树的重建时,在<算法笔记>上学到了如何通过先序(或后序)遍历序列和中序遍历序列重建二叉树,它也提出了一个问题:如何通过层序和中序遍历序列重建二叉树?我一开始按照先序和中序重建的思路 ...
- [Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]
[问题描述][中等] [解答思路] public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) { ...
- leetcode 106. 从中序与后序遍历序列构造二叉树 c语言递归解法
如题: 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素.例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9, ...
- leetcode 106. 从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树思考分析
目录 1.106题目 2.参考思路:递归切割数组 3.105题目 4.同样思路的代码 1.106题目 2.参考思路:递归切割数组 代码参考:公众号:代码随想录 后序数组+中序数组 以 后序数组(左右中 ...
- 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...
- Suzy找到实习了吗Day 18 | 二叉树进行中:513 找树左下角的值,112 路径总和 ,106.从中序与后序遍历序列构造二叉树
513 找树左下角的值 solution # Definition for a binary tree node. # class TreeNode: # def __init__(self, val ...
- 【必拿下系列】106. 从中序与后序遍历序列构造二叉树105从前序与中序遍历序列构造二叉树
两题各自的链接放这里了: 链接: 106 链接: 105 106.从中序与后序遍历序列构造二叉树 如果你是不知道理论的,那就得仔细分析了, 举个例子: 输入:inorder = [9,3,15,20, ...
- 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)
引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程: 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导 ...
- [leetcode]从中序与后序/前序遍历序列构造二叉树
从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 po ...
最新文章
- 解密module_init幕后的故事
- spring mvc DispatcherServlet详解之一---处理请求深入解析(续)
- 【POI】对于POI无法处理超大xls等文件,官方解决方法【已解决】【多线程提升速率待定】...
- 防外挂和防木马的通用解决方案
- 如何替换SAP Spartacus启动Component -app-root
- “一次编写,随处运行” Intel HTML5技术研讨会
- [CareerCup] 8.10 Implement a Hash Table 实现一个哈希表
- pytorch tensor数据类型与变换类型
- mysql 通过ssh通道安全连接数据库
- 如何编写单元测试用例
- 为Windows 10 UWP 应用设置代理
- 软件测试思想者(Software Testing - Thinker) - Logo一览
- 计算机主机配置一般有机箱主板cpu,组装台式电脑配置清单
- 1、ruby语法抄写练习
- LeCo-200. 岛屿数量
- 采用keras深度学习框架搭建卷积神经网络模型实现垃圾分类,基于树莓派上进行实时视频流的垃圾识别源代码
- 对于SLAM定位中各类坐标系的理解(坐标系,里程计坐标系,基座坐标系与雷达坐标系)
- android 仿qq相册功能,Android第四十九期 - 仿QQ空间上传功能+本地数据库存储
- android清理存储工具,(安卓)CCleaner Pro — 手机垃圾文件清理工具
- 母牛问题。母牛每年生一只母牛,新出生的母牛成长三年后也能每年生一只 母牛……
热门文章
- PyTorch 入坑八:卷积与转置卷积
- K210系列第一个示例程序
- 文件与目录的默认权限与隐藏权限
- 爬去图片插件_学不会你打我,一个插件爬取亚马逊数据!
- linux服务器连接中文,Linux系统遇到SecureCRT连接到linux服务器之后出现乱码问题
- java 反转二叉树 非递归_【刷算法】翻转二叉树的递归和非递归解法
- python接口封装_Python 接口测试之接口关键字封装
- Python数据结构与算法(1.2)——Python基础之变量与内置数据类型
- 安装Oracle WebCenter Content 11.1.1.8.0并将其与Oracle WebCenter Portal 11.1.1.8.0集成
- 死锁示例代码_Java示例中的死锁