题目链接
class Solution {
public TreeNode buildTree(int[] preorder, int[] inorder) {
if (preorder.length == 0)
return null;
TreeNode root = new TreeNode(preorder[0]);
int index = 0;
for (int i = 0; i < inorder.length; i++) {
if (inorder[i] == preorder[0]) {
index = i;
break;
}
}
int[] leftin = Arrays.copyOfRange(inorder, 0, index);
int[] rightin = Arrays.copyOfRange(inorder, index + 1, inorder.length);
int[] leftpre = Arrays.copyOfRange(preorder, 1, 1 + index);
int[] rightpre = Arrays.copyOfRange(preorder, 1 + index, preorder.length);
root.left = buildTree(leftpre, leftin);
root.right = buildTree(rightpre, rightin);
return root;
}
}
小结:要熟悉java
的API
,拆分数组用Arrays.copyOfRange()
,注意递归的写法即可。