输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

示例1

输入

[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]

返回值

{1,2,5,3,4,6,7}

class TestTreeNode2 {static TreeNode findBinaryTree(int[] pre, int preStart, int preEnd, int[] in ,int inStart, int inEnd){if(preStart > preEnd || inStart > inEnd)return null;TreeNode root = new TreeNode(pre[preStart]);for(int i = inStart; i<=inEnd; i++){if(in[i] == pre[preStart]){// 左子树的长度为i-inStartroot.left = findBinaryTree(pre, preStart+1,preStart+i-inStart, in, inStart,i-1);root.right = findBinaryTree(pre, preStart+i-inStart+1,preEnd, in, i+1,inEnd);}}return root;}// 重建主函数public static TreeNode reConstructBinaryTree(int [] pre,int [] in) {TreeNode root = findBinaryTree(pre, 0, pre.length-1, in, 0, in.length-1);return root;}public static void main(String[] args) {int[] pre = new int[]{1,2,4,3,5,6};  // 前序序列 前序序列的第一个为根节点int[] in = new int[]{4,2,1,5,3,6};  // 中序序列  根节点的左边为左子树,右边为右子数TreeNode root = reConstructBinaryTree(pre,in);showPreTree(root);}static void showPreTree(TreeNode node){if(null == node){return ;}System.out.println(node.val);if(null != node.left){showPreTree(node.left);}if(null != node.right){showPreTree(node.right);}}
}

常考数据结构与算法:重建二叉树相关推荐

  1. 常考数据结构与算法:输出二叉树的右视图

    题目描述 请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图 上图树的右视图为:{1,4,3,7} 做此题之前可以先做下面3道题: 1. 常考数据结构与算法:求二叉树的层序遍历 2.常 ...

  2. 常考数据结构与算法:求二叉树的层序遍历

    题目描述 给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历) 例如: 给定的二叉树是{3,9,20,#,#,15,7}, 该二叉树层序遍历的结果是 [ [3], [9,20], ...

  3. 常考数据结构与算法:在二叉树中找到两个节点的最近公共祖先

    题目描述 给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点.   假设节点的值都大于0. 比如9,10的最近公共祖先节点是2. 思路: 从根节点开始遍历 ...

  4. 常考数据结构与算法:实现二叉树先序,中序和后序遍历

    题目描述 分别按照二叉树先序,中序和后序打印所有的节点. 输入 {1,2,3} 返回值 [[1,2,3],[2,1,3],[2,3,1]] import java.util.ArrayList;cla ...

  5. 常考数据结构与算法:判断二叉树是否对称(迭代法,递归法)

    给定一棵二叉树,判断琪是否是自身的镜像(即:是否对称) 例如:下面这棵二叉树是对称的      1     /  \   2    2  / \    / \ 3 4  4  3 下面这棵二叉树不对称 ...

  6. 数据结构与算法--重建二叉树

    二叉树 树在实际编程中经常遇到地一种数据结构.上一篇中我们解释了二叉树及其原理,从中可以知道,树地操作会涉及到很多指针地操作,我们一般遇到地树相关地问题差不多都是二叉树.二叉树最重要地莫过于遍历,即按 ...

  7. 常考数据结构与算法:二叉树的最大深度

    题目描述 求给定二叉树的最大深度, 最大深度是指树的根结点到最远叶子结点的最长路径上结点的数量. class TreeNode {int val;TreeNode left;TreeNode righ ...

  8. 常考数据结构与算法:二叉树的镜像

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \. 6 10 / \ / \. 5 7 9 11 镜像二叉树 8 / \. 10 6 / \ ...

  9. 常考数据结构与算法:二叉树的之字形层序遍历

    题目描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 例如: 给定的二叉树是{3,9,20,#,#,15,7}, 该二叉树之字形层序遍历的结果是 [ ...

最新文章

  1. nstruts2.0发布前奏---浅谈struts和依赖注入在项目中的应用
  2. 编程开发使用的软件大全
  3. 【机器学习】sklearn数据集获取、分割、分类和回归
  4. mongodb书籍_我为什么放弃MySQL,选择了MongoDB?看到这个数据你就会明白了
  5. POJ 2912 Rochambeau(难,好题,枚举+带权并查集)
  6. python常用代码大全-Python常用库大全及简要说明
  7. python矩阵运算与线形代数_Python 执行矩阵与线性代数运算
  8. Verilog设计中的锁存器
  9. unity使用html播放器,Unity Web Player and browser communication Unity网络播放器和浏览器通信...
  10. 数据结构(C语言)-串
  11. 离散数学集合论与数理逻辑基本概念
  12. 农业统计分析系列2-试验设计
  13. Android 短视频 SDK 转场特效的音视频同步分析
  14. 隐藏IP的功能和原理
  15. sap采购申请自动转采购订单_我的SAP运维日常_0021_MM_计划订单转采购申请时绑定凭证类型...
  16. 不用写一行代码,就能用ivx制作一个“微信小程序“,超牛逼
  17. 用C++语言写游戏——打怪小游戏
  18. 全球与中国新一代高级电池市场深度研究分析报告
  19. 大数据就业的三大方向和十种岗位
  20. linux gcc 缺少 libmpfr.so,rpm方式安装gcc缺少依赖项的解决方法

热门文章

  1. tree树的展示,check树的展示,json数据转zree树格式数据
  2. 反射(操作MetaData)
  3. BZOJ3261 最大异或和 解题报告(可持久化Trie树)
  4. 部署harbor1.2.0开启ldap验证
  5. Python学习day5作业
  6. 将功补过 树形动态规划
  7. sqlserver中将行数据转为Xml文件格式
  8. 从无头单链表中删除节点 结构之法 4
  9. 一、如何创建一个状态栏扩展(火狐插件扩展开发教程)
  10. Django-Migration admin.0001_initial is applied before its dependency accounts.0001_initial on....