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 }