Skip to content

Commit c250fea

Browse files
authored
Merge pull request gzc426#398 from Jerring/master
1
2 parents 7fb0cf7 + 55a2900 commit c250fea

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

2018.12.08-leetcode105/TheRocket.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
```java
2+
/**
3+
* Definition for a binary tree node.
4+
* public class TreeNode {
5+
* int val;
6+
* TreeNode left;
7+
* TreeNode right;
8+
* TreeNode(int x) { val = x; }
9+
* }
10+
*/
11+
class Solution {
12+
public TreeNode buildTree(int[] preorder, int[] inorder) {
13+
Map<Integer, Integer> map = new HashMap<>();
14+
for (int i = 0; i < inorder.length; ++i) {
15+
map.put(inorder[i], i);
16+
}
17+
return buildTree(preorder, 0, preorder.length - 1, inorder, 0, inorder.length - 1, map);
18+
}
19+
20+
private TreeNode buildTree(int[] preorder, int preBegin, int preEnd, int[] inorder, int inBegin, int inEnd, Map<Integer, Integer> map) {
21+
if (preBegin > preEnd || inBegin > inEnd) {
22+
return null;
23+
}
24+
TreeNode root = new TreeNode(preorder[preBegin]);
25+
int i = map.get(root.val);
26+
int leftEnd = preBegin + i - inBegin;
27+
root.left = buildTree(preorder, preBegin + 1, leftEnd, inorder, inBegin, i - 1, map);
28+
root.right = buildTree(preorder, leftEnd + 1, preEnd, inorder, i + 1, inEnd, map);
29+
return root;
30+
}
31+
}
32+
```

0 commit comments

Comments
 (0)