寫的真費勁!!!!
我就是一道酸菜魚,又酸,又菜,還多餘
(恕我直言,在本地IDE中測試都不會,打印二叉樹都要想半天,這還要啥offer啊,我一定是預約上班前被裁員的名額了)
public class Solution {
public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
return reConstructBT(0,pre.length-1,0,in.length-1,pre,in);
}
private TreeNode reConstructBT(int preStart,int preEnd,int inStart,int inEnd,int[] pre,int[] in){
TreeNode root = new TreeNode(pre[preStart]);
root.left = null;
root.right = null;
if(preStart == preEnd||inStart == inEnd){
return root;
}
int a = pre[preStart];
int index1 = getIndex(in,a);
int leftLength = index1 - inStart;
int rightLength = inEnd - index1;
if(leftLength>0){
root.left = reConstructBT(preStart+1,preStart+leftLength,inStart,index1-1,pre,in);
}
if(rightLength>0){
root.right = reConstructBT(preStart+leftLength+1,preEnd,index1+1,inEnd,pre,in);
}
return(root);
}
public static int getIndex(int[] arr, int value) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == value) {
return i;
}
}
return -1;
}
}