重建二叉树(根据前序中序遍历构建二叉树)
2015-06-15 19:44
417 查看
重建二叉树(根据前序中序遍历构建二叉树)
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。(测试用例中,”树”的输出形式类似于树的层次遍历,没有节点的用#来代替)代码
[code]/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public TreeNode reConstructBinaryTree(int [] pre,int [] in) { if(pre==null||in==null||pre.length==0){ return null; } int val=pre[0]; TreeNode root= new TreeNode(val); int index=-1; for(int i=0;i<in.length;i++){ if(in[i]==val){ index=i; break; } } if(index==-1) return null; int[] leftpre=new int[index]; for(int i=0;i<index;i++){ leftpre[i]=pre[i+1]; } int[] leftin=new int[index]; for(int i=0;i<index;i++){ leftin[i]=in[i]; } int[] rigpre=new int[pre.length-index-1]; for(int i=0;i<pre.length-index-1;i++){ rigpre[i]=pre[index+i+1]; } int[] rigin=new int[pre.length-index-1]; for(int i=0;i<pre.length-index-1;i++){ rigin[i]=in[index+i+1]; } root.left=reConstructBinaryTree(leftpre,leftin); root.right=reConstructBinaryTree(rigpre,rigin); return root; } }
相关文章推荐
- SQLServer笔记:查询某一常量日期之前(或两个日期之间)的记录
- java.io.IOException: 您的主机中的软件中止了一个已建立的连接。
- POJ 1753 bfs+位运算
- c# 扩展方法奇思妙用基础:IsBetween 通用扩展
- Python之PyAudio使用
- oracle数据库安装与navicat的连接
- [java]深入理解JVM内存模型
- 人们为何喜欢在社交网络发布个人状态?
- Android: 利用SurfaceView绘制股票滑动直线解决延迟问题
- jQuery 的选择器 简单总结
- Hadoop学习4
- Hadoop学习4
- Hadoop学习4
- Hadoop学习4
- Hadoop学习4
- Hadoop学习4
- Hadoop学习4
- Hadoop学习4
- Hadoop学习4
- Hadoop学习4