Construct Binary Tree from Preorder and Inorder Traversal LeetCode solution in Java

1
class Solution {
2
Map<Integer, Integer> inMap;
3
int curIndex = 0;
4
int[] preOrder;
5

6
public TreeNode buildTree(int[] preorder, int[] inorder) {
7
preOrder = preorder;
8
inMap = new HashMap<>();
9
for (int i = 0; i < inorder.length; i++) {
10
inMap.put(inorder[i], i);
11
}
12
return dfs(0, preorder.length - 1);
13
}
14

15
public TreeNode dfs(int s, int e) {
16
if (s > e) return null;
17
int curNode = preOrder[curIndex++];
18
TreeNode root = new TreeNode(curNode);
19
int inRoot = inMap.get(curNode);
20
root.left = dfs(s, inRoot - 1);
21
root.right = dfs(inRoot + 1, e);
22
return root;
23
}
24
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0