1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { return build(0, 0, inorder.length - 1, preorder, inorder); } public TreeNode build(int preStart, int inStart, int inEnd, int[] preorder, int[] inorder) { if (preStart > preorder.length - 1 || inStart > inEnd) return null; TreeNode root = new TreeNode(preorder[preStart]); int inIndex = 0; for (int i = inStart; i <= inEnd; ++i) { if (preorder[preStart] == inorder[i]) { inIndex = i; break; } } root.left = build(preStart + 1, inStart, inIndex - 1, preorder, inorder); root.right= build(preStart + inIndex - inStart + 1, inIndex+1, inEnd, preorder, inorder); return root; } }
|