Skip to content

Commit 2594fc5

Browse files
Sean PrashadSean Prashad
authored andcommitted
Update
105_Construct_Binary_Tree_from_Preorder_and_Inorder_Traversal.java
1 parent a0c5189 commit 2594fc5

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed
Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,26 @@
11
class Solution {
22
public TreeNode buildTree(int[] preorder, int[] inorder) {
3-
if (preorder == null || inorder == null || preorder.length != inorder.length) {
4-
return null;
5-
}
6-
7-
return buildTreeHelper(preorder, inorder, 0, 0, inorder.length - 1);
3+
return helper(preorder, inorder, 0, preorder.length - 1, 0, inorder.length - 1);
84
}
95

10-
private TreeNode buildTreeHelper(int[] preorder, int[] inorder, int preStart, int inStart, int inEnd) {
11-
if (preStart > preorder.length - 1 || inStart > inEnd) {
6+
private TreeNode helper(int[] preorder, int[] inorder, int preStart, int preEnd, int inStart, int inEnd) {
7+
if (preStart > preEnd || inStart > inEnd) {
128
return null;
139
}
1410

1511
TreeNode root = new TreeNode(preorder[preStart]);
12+
int rootIdx = 0;
1613

17-
int inOrderIdx = preStart;
18-
for (int i = 0; i < inorder.length; i++) {
19-
if (root.val == inorder[i]) {
20-
inOrderIdx = i;
14+
for (int i = inStart; i <= inEnd; i++) {
15+
if (inorder[i] == root.val) {
16+
rootIdx = i;
2117
break;
2218
}
2319
}
2420

25-
int leftTreeLength = inOrderIdx - inStart;
21+
root.left = helper(preorder, inorder, preStart + 1, preEnd, inStart, rootIdx - 1);
22+
root.right = helper(preorder, inorder, preStart + rootIdx - inStart + 1, preEnd, rootIdx + 1, inEnd);
2623

27-
root.left = buildTreeHelper(preorder, inorder, preStart + 1, inStart, inOrderIdx - 1);
28-
root.right = buildTreeHelper(preorder, inorder, preStart + leftTreeLength + 1, inOrderIdx + 1, inEnd);
24+
return root;
2925
}
3026
}

0 commit comments

Comments
 (0)