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


京公网安备 11010502036488号