题目描述:

根据一棵树的中序遍历与后序遍历构造二叉树。

注意:
你可以假设树中没有重复的元素。

例如,给出

中序遍历 inorder = [9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]
返回如下的二叉树:

3
   / \
  9  20
    /  \
   15   7

思路分析:

因此根据上文所述,我们可以发现后序遍历的数组最后一个元素代表的即为根节点。知道这个性质后,我们可以利用已知的根节点信息在中序遍历的数组中找到根节点所在的下标,然后根据其将中序遍历的数组分成左右两部分,左边部分即左子树,右边部分为右子树,针对每个部分可以用同样的方法继续递归下去构造。

最后直接套上代码模板就行。最主要的是清楚根节点要做什么,然后递归左子树和右子树。

代码实现:

class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) {return build(inorder,0,inorder.length-1,postorder,0,postorder.length-1);}TreeNode build(int[] inorder,int instart,int inend,int[] postorder,int postart,int poend){if(instart>inend){return null;}int index=0;int rootVal=postorder[poend];for(int i=instart;i<=inend;i++){if(rootVal==inorder[i]){index=i;break;}}TreeNode root=new TreeNode(rootVal);int leftsize=index-instart;root.left=build(inorder,instart,index-1,postorder,postart,postart+leftsize-1);root.right=build(inorder,index+1,inend,postorder,postart+leftsize,poend-1);return root;}
}

LeetCode-106:从中序与后序遍历序列构造二叉树相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. java用中根后根序列构造二叉树,106. 从中序与后序遍历序列构造二叉树

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

  9. 数组反向遍历ios_LeetCode106.从中序与后序遍历序列构造二叉树(Construct Binary Tree from Inor...)...

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

  10. 代码随想录第18天|找树左下角的值,路径总和,从中序和后序遍历序列构造二叉树

    LeetCode513.找树左下角的值 题目链接:513. 找树左下角的值 - 力扣(LeetCode) 思路: 迭代法(只需要记录最后一行第一个节点的数值就可以了.): /*** Definitio ...

最新文章

  1. Python入门(good)
  2. PHP $_FILES中error返回值详解
  3. 为什么Python类语法应该不同?
  4. php日志数据统计,awk 进行php日志累计报错统计
  5. php极客时间,PHP日期与时间
  6. oracle的sql口令,Oracle数据库的SYS口令是什么?
  7. python从入门到放弃表情图-[python从入门到放弃]基于百度OCR的文字识别
  8. CI中创建你自己的类库
  9. LoadRunner 录制常见错误解决方法
  10. SVM-线性可分支持向量机
  11. Cocos2d—X游戏开发之VS2010 控制台输出中文,模拟器中文乱码问题解决
  12. mysql一般要配置的几个小节及选项是_MySQL - 必知必会(下)
  13. 单目标决策---决策的分类
  14. 微信小程序开发——获取APPID
  15. CAD 删除 _ArchTick 块定义
  16. python 回溯算法总结
  17. iphone4s更换电池_如果更换了iPhone电池后仍然出现问题该怎么办
  18. ionic自定义图标
  19. 使用 logrotate 配置 supervisor 进行日志管理按天备份
  20. Android职业规划

热门文章

  1. Vue通过id跳转到商品详情页
  2. ASP .NET Controller返回类型
  3. ECMAScript6 ES6语法
  4. SQLite数据库的特性
  5. 最大公约数(Greatest Common Divisor)
  6. 关于meta http-equiv=Content-Type content=text/html:charset=UTF-8
  7. Function spec
  8. qq群关系数据库 mysql_QQ群关系数据库
  9. 計算機二級-java09
  10. MySQL数据库之互联网常用架构方案(全)