力扣-105.从前序与中序遍历序列构造二叉树
题目链接
105.从前序与中序遍历序列构造二叉树
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()
,注意递归的写法即可。