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.从中序与后序遍历序列重建二叉树相关推荐

  1. 通过层序和中序遍历序列重建二叉树

    在学二叉树的重建时,在<算法笔记>上学到了如何通过先序(或后序)遍历序列和中序遍历序列重建二叉树,它也提出了一个问题:如何通过层序和中序遍历序列重建二叉树?我一开始按照先序和中序重建的思路 ...

  2. [Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) { ...

  3. leetcode 106. 从中序与后序遍历序列构造二叉树 c语言递归解法

    如题: 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素.例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9, ...

  4. leetcode 106. 从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树思考分析

    目录 1.106题目 2.参考思路:递归切割数组 3.105题目 4.同样思路的代码 1.106题目 2.参考思路:递归切割数组 代码参考:公众号:代码随想录 后序数组+中序数组 以 后序数组(左右中 ...

  5. 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...

  6. Suzy找到实习了吗Day 18 | 二叉树进行中:513 找树左下角的值,112 路径总和 ,106.从中序与后序遍历序列构造二叉树

    513 找树左下角的值 solution # Definition for a binary tree node. # class TreeNode: # def __init__(self, val ...

  7. 【必拿下系列】106. 从中序与后序遍历序列构造二叉树105从前序与中序遍历序列构造二叉树

    两题各自的链接放这里了: 链接: 106 链接: 105 106.从中序与后序遍历序列构造二叉树 如果你是不知道理论的,那就得仔细分析了, 举个例子: 输入:inorder = [9,3,15,20, ...

  8. 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)

    引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程: 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导 ...

  9. [leetcode]从中序与后序/前序遍历序列构造二叉树

    从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 po ...

最新文章

  1. 解密module_init幕后的故事
  2. spring mvc DispatcherServlet详解之一---处理请求深入解析(续)
  3. 【POI】对于POI无法处理超大xls等文件,官方解决方法【已解决】【多线程提升速率待定】...
  4. 防外挂和防木马的通用解决方案
  5. 如何替换SAP Spartacus启动Component -app-root
  6. “一次编写,随处运行” Intel HTML5技术研讨会
  7. [CareerCup] 8.10 Implement a Hash Table 实现一个哈希表
  8. pytorch tensor数据类型与变换类型
  9. mysql 通过ssh通道安全连接数据库
  10. 如何编写单元测试用例
  11. 为Windows 10 UWP 应用设置代理
  12. 软件测试思想者(Software Testing - Thinker) - Logo一览
  13. 计算机主机配置一般有机箱主板cpu,组装台式电脑配置清单
  14. 1、ruby语法抄写练习
  15. LeCo-200. 岛屿数量
  16. 采用keras深度学习框架搭建卷积神经网络模型实现垃圾分类,基于树莓派上进行实时视频流的垃圾识别源代码
  17. 对于SLAM定位中各类坐标系的理解(坐标系,里程计坐标系,基座坐标系与雷达坐标系)
  18. android 仿qq相册功能,Android第四十九期 - 仿QQ空间上传功能+本地数据库存储
  19. android清理存储工具,(安卓)CCleaner Pro — 手机垃圾文件清理工具
  20. 母牛问题。母牛每年生一只母牛,新出生的母牛成长三年后也能每年生一只 母牛……

热门文章

  1. PyTorch 入坑八:卷积与转置卷积
  2. K210系列第一个示例程序
  3. 文件与目录的默认权限与隐藏权限
  4. 爬去图片插件_学不会你打我,一个插件爬取亚马逊数据!
  5. linux服务器连接中文,Linux系统遇到SecureCRT连接到linux服务器之后出现乱码问题
  6. java 反转二叉树 非递归_【刷算法】翻转二叉树的递归和非递归解法
  7. python接口封装_Python 接口测试之接口关键字封装
  8. Python数据结构与算法(1.2)——Python基础之变量与内置数据类型
  9. 安装Oracle WebCenter Content 11.1.1.8.0并将其与Oracle WebCenter Portal 11.1.1.8.0集成
  10. 死锁示例代码_Java示例中的死锁