Skip to content

Commit b50811c

Browse files
add: invert bin tree
1 parent 32260fe commit b50811c

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import java.util.HashMap;
2+
import java.util.Map;
3+
4+
class TreeNode {
5+
int val;
6+
TreeNode left;
7+
TreeNode right;
8+
9+
TreeNode() {
10+
}
11+
12+
TreeNode(int val) {
13+
this.val = val;
14+
}
15+
16+
TreeNode(int val, TreeNode left, TreeNode right) {
17+
this.val = val;
18+
this.left = left;
19+
this.right = right;
20+
}
21+
}
22+
23+
// tc -> O(n)
24+
class Solution {
25+
26+
public TreeNode invertTree(TreeNode root) {
27+
if (root == null)
28+
return null;
29+
30+
TreeNode left = invertTree(root.left);
31+
TreeNode right = invertTree(root.right);
32+
33+
root.right = left;
34+
root.left = right;
35+
36+
return root;
37+
}
38+
39+
}
40+
41+
// NOTE: deep copy 작업도 해볼 것
42+
// 같은 val의 Node가 여러 개 들어오는 경우를 고려하지 못했음..
43+
class WrongSolution {
44+
45+
public Map<Integer, TreeNode> tMap = new HashMap<>();
46+
47+
public TreeNode invertTree(TreeNode root) {
48+
if (root == null)
49+
return null;
50+
51+
int rVal = root.val;
52+
53+
tMap.computeIfAbsent(rVal, k -> new TreeNode(k));
54+
55+
TreeNode cur = tMap.get(rVal);
56+
57+
if (root.left != null) {
58+
tMap.computeIfAbsent(root.left.val, k -> new TreeNode(k));
59+
cur.right = tMap.get(root.left.val);
60+
invertTree(root.left);
61+
}
62+
63+
if (root.right != null) {
64+
tMap.computeIfAbsent(root.right.val, k -> new TreeNode(k));
65+
cur.left = tMap.get(root.right.val);
66+
invertTree(root.right);
67+
}
68+
69+
return tMap.get(root.val);
70+
}
71+
}

0 commit comments

Comments
 (0)