递归重建树

public TreeNode reConstructBinaryTree(int [] pre, int [] vin) {
        if (pre == null || pre.length == 0){
            return null;
        }
        TreeNode root = new TreeNode(pre[0]);
        int index = 0;
        for (int i = 0; i < vin.length; i++) {
            if (vin[i] == pre[0]){
                index = i;
            }
        }
        int[] leftPre = Arrays.copyOfRange(pre, 1, index+1);
        int[] rightPre = Arrays.copyOfRange(pre, index+1, pre.length);
        int[] leftVin = Arrays.copyOfRange(vin, 0, index);
        int[] rightVin = Arrays.copyOfRange(vin, index+1, vin.length);
        root.leftChild = reConstructBinaryTree(leftPre, leftVin);
        root.rightChild = reConstructBinaryTree(rightPre, rightVin);
        return root;
    }