java刷题-剑指offer 07 重建二叉树 题目代码结果 题目 代码 class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { int n = preorder.length; if (n == 0) return null; int rootVal = preorder[0], rootIndex = 0; for (int i = 0; i < n; i++) { //先遍历中序数组找到根节点所在位置 if (inorder[i] == rootVal) { rootIndex = i; break; } } TreeNode root = new TreeNode(rootVal); root.left = buildTree(Arrays.copyOfRange(preorder, 1, 1 + rootIndex), //左子树是从左子树节点开始递归 Arrays.copyOfRange(inorder, 0, rootIndex)); root.right = buildTree(Arrays.copyOfRange(preorder, 1 + rootIndex, n), //右子树是从右子树节点开始递归 Arrays.copyOfRange(inorder, rootIndex + 1, n)); return root; } } 结果