Skip to content

Commit bfdfbaa

Browse files
committed
Create f-exuan21.java
construct binary tree solutions
1 parent 7a7a020 commit bfdfbaa

File tree

1 file changed

+50
-0
lines changed
  • construct-binary-tree-from-preorder-and-inorder-traversal

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode() {}
8+
* TreeNode(int val) { this.val = val; }
9+
* TreeNode(int val, TreeNode left, TreeNode right) {
10+
* this.val = val;
11+
* this.left = left;
12+
* this.right = right;
13+
* }
14+
* }
15+
*/
16+
17+
// time : O(n)
18+
// space : O(n)
19+
// n은 트리 노드 수
20+
21+
class Solution {
22+
23+
private int i = 0;
24+
Map<Integer, Integer> map = new HashMap<>();
25+
26+
public TreeNode buildTree(int[] preorder, int[] inorder) {
27+
28+
for(int i = 0; i < inorder.length; i++) {
29+
map.put(inorder[i], i);
30+
}
31+
32+
return build(preorder, inorder, 0, inorder.length);
33+
34+
}
35+
36+
private TreeNode build(int[] preorder, int[] inorder, int start, int end) {
37+
if(i >= preorder.length || start >= end) {
38+
return null;
39+
}
40+
41+
int value = preorder[i++];
42+
int index = map.get(value);
43+
44+
TreeNode leftTreeNode = build(preorder, inorder, start, index);
45+
TreeNode rightTreeNode = build(preorder, inorder, index+1, end);
46+
47+
return new TreeNode(value, leftTreeNode, rightTreeNode);
48+
}
49+
50+
}

0 commit comments

Comments
 (0)