build tree
2014-04-01 14:33
183 查看
有二叉树的前序遍历和后序遍历,构造二叉树
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode buildTree(int[] preorder, int[] inorder) {
HashMap<Integer,Integer> map = new HashMap<Integer,Integer> ();
for(int i=0;i<inorder.length;i++){
map.put(inorder[i], i);
}
return build(map,preorder,0,preorder.length-1,inorder,0,inorder.length-1);
}
private static TreeNode build(HashMap<Integer,Integer> map, int[] preorder,int ps,int pe,int[] inorder,int is,int ie) {
if(ps>pe) return null;
TreeNode root=new TreeNode(preorder[ps]);
if(ps==pe) return root;
int i=map.get(preorder[ps]);
int leftlength=i-is;
root.left=build(map,preorder,ps+1,ps+leftlength,inorder,is,i-1);
root.right=build(map,preorder,ps+i+1-is,pe,inorder,i+1,ie);
return root;
}
}
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode buildTree(int[] preorder, int[] inorder) {
HashMap<Integer,Integer> map = new HashMap<Integer,Integer> ();
for(int i=0;i<inorder.length;i++){
map.put(inorder[i], i);
}
return build(map,preorder,0,preorder.length-1,inorder,0,inorder.length-1);
}
private static TreeNode build(HashMap<Integer,Integer> map, int[] preorder,int ps,int pe,int[] inorder,int is,int ie) {
if(ps>pe) return null;
TreeNode root=new TreeNode(preorder[ps]);
if(ps==pe) return root;
int i=map.get(preorder[ps]);
int leftlength=i-is;
root.left=build(map,preorder,ps+1,ps+leftlength,inorder,is,i-1);
root.right=build(map,preorder,ps+i+1-is,pe,inorder,i+1,ie);
return root;
}
}
相关文章推荐
- UIButton 点击时无法附带自身参数的解决办法
- 2014年4月1日 pcDuino V3今天全球正式发布,4月6日全球同步限量发售,
- 关于“The serializable class XXX does not declare a static final serialVersionUID field of type long” 错
- IOS7 下修改 UINavigationBar 的背景色和设置标题的颜色
- Google Guice
- MiniGUI - UNIX Domain Socket 封装
- Storyboard里面的几种Segue区别:push,modal,popover,replace和custom(转载)
- AdditionQuiz
- ueditor自定义按钮
- GHD esta temporada, pero que difícilmente encontrará sitios que garantiza ahorros increíbles ofrecen en todos estos artículos
- 第五周实验_打字成绩判断程序GUI
- scheme corotuine
- 无需Try catch 的UI事件封装类
- 每个负责写GUI的女孩上辈子都是折翼天使
- Practical Common Lisp学习笔记 (六)AllegroServe问题小结
- 【原】YUI3:js加载过程及时序问题
- AdditionQuiz
- ffmpeg遇到inttypes.h和UINT64_C
- ubuntu 13.10 JD-GUI跑不起来怎么办
- sicily 1443.Printer Queue