递归重建树
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; }