class Solution {
public int i = 0;
public TreeNode buildTree(int[] preorder, int[] inorder) {
if(preorder == null || inorder == null){
return null;
}
return buildTreeChild(preorder,inorder,0,inorder.length-1);
}
public TreeNode buildTreeChild(int[] preorder,int[] inorder,int inbegin,int inend){
if(inbegin > inend){
return null;
}
TreeNode root = new TreeNode(preorder[i]);
int rootIndex = findIndex(inorder,inbegin,inend,preorder[i]);
i++;
root.left = buildTreeChild(preorder,inorder,inbegin,rootIndex - 1);
root.right = buildTreeChild(preorder,inorder,rootIndex + 1,inend);
return root;
}
public int findIndex (int[] inorder,int inbegin,int inend,int key){
for(int i = inbegin;i<= inend;i++){
if(inorder[i] == key){
return i;
}
}
return -1;
}
}