Construct Binary Tree from Preorder and Inorder Traversal

 1 public class Solution {
 2     public TreeNode buildTree(int[] preorder, int[] inorder) {
 3         int len =preorder.length;
 4         if(len<=0) return null;
 5         return build(preorder,0,len-1,inorder,0,len-1);
 6     }
 7     public TreeNode build(int[]pre,int preS,int preE,int []in,int inS,int inE){
 8         if(preS>preE || inS>inE) return null;
 9         int first = pre[preS];
10         TreeNode p = new TreeNode(first);
11         if(preS==preE) // don't forget this
12             return p;
13         int index = inS;
14         while(in[index]!=first){
15             index++;
16         }
17         int len =index-inS;
18         
19         p.left = build(pre,preS+1,preS+len,in,inS,index-1);
20         p.right = build(pre,preS+len+1,preE,in,index+1,inE);
21         return p;
22     }
23 }
View Code

 

posted @ 2014-02-12 04:01  krunning  阅读(111)  评论(0编辑  收藏  举报