Arrays.copyOfRange(T[ ] original,int from,int to)
将一个原始的数组original,从小标from开始复制,复制到小标to,生成一个新的数组。
注意这里包括下标from,不包括下标to。
假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
import
java.util.*;
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public
class
Solution {
public
TreeNode reConstructBinaryTree(
int
[] pre,
int
[] in) {
if
(pre.length ==
0
||in.length ==
0
){
return
null
;
}
TreeNode node =
new
TreeNode(pre[
0
]);
for
(
int
i =
0
; i < in.length; i++){
if
(pre[
0
] == in[i]){
node.left = reConstructBinaryTree(Arrays.copyOfRange(pre,
1
, i+
1
), Arrays.copyOfRange(in,
0
, i));
node.right = reConstructBinaryTree(Arrays.copyOfRange(pre, i+
1
, pre.length), Arrays.copyOfRange(in, i+
1
,in.length));
}
}
return
node;
}
}