重建二叉树
来源:互联网 发布:javascript实现trie树 编辑:程序博客网 时间:2024/05/22 05:22
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
思路也很简单就是递归,二分,不许要想那么多吧两个数组的左右都穿进去
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public TreeNode Built(int prestart,int preend,int[] pre,int[] in,int instart,int inend ) { int index = 0; if(prestart>preend || instart>inend) { return null; }// T = pre[start]; TreeNode p =new TreeNode(pre[prestart]); //p.val =]; for(int i=instart;i<=inend;i++) { if(pre[prestart]==in[i]) { index=i; break; } } p.left = Built(prestart+1,preend+index-instart,pre,in,instart,index-1); p.right = Built(prestart+1+index-instart,preend,pre,in,index+1,inend); return p; } public TreeNode reConstructBinaryTree(int [] pre,int [] in) { TreeNode p=null; p = Built(0,pre.length-1,pre,in,0,in.length-1); return p; }}
不过有一点必须要注意,就是pre的开始与结尾,in数组因为固定了,所以就是普通的加一减一
但是pre不一样,有可能了要跳,左边树调到右边去,所以在个p.right赋值时,一定要考虑到他的左边已经不是start了,而是start+左子树长度(这样剩下的才是右子树)
阅读全文
0 0
- 3.9重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 二叉树的重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- Bug害死人
- 一些难懂难记的基础---补码反码
- NoSQL之Redis
- Redis——LAMP环境下的安装与部署---学习笔记(零)
- Redis复制与可扩展集群搭建——Redis学习笔记(四)
- 重建二叉树
- 为么使用Redis及其产品定位 —— Redis学习笔记(二)
- 一点感想
- ThinkPHP学习笔记(二)-------一个放不开
- Redis内存使用优化与存储——学习笔记(三)
- USACO-Section1.3 Prime Cryptarithm [搜索]
- ThinkPHP学习总结--
- Ubuntu下查看Linux内核源码(vim+ctags)
- PHP函数——session_id()