【劍指offer】已知二叉樹的前序和中序,重建二叉樹(java)

寫的真費勁!!!!

我就是一道酸菜魚,又酸,又菜,還多餘

(恕我直言,在本地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;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章