Skip to content

Commit e6c6b28

Browse files
authored
Merge pull request #551 from jaejeong1/main
[jaejeong1] WEEK 11 Solutions
2 parents 64495db + 5a0b4ee commit e6c6b28

File tree

3 files changed

+139
-0
lines changed

3 files changed

+139
-0
lines changed

โ€Žinvert-binary-tree/jaejeong1.java

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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+
class Solution {
17+
// ํ’€์ด: child node๋กœ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ์žฌ๊ท€๋กœ ๊ณ„์† left์™€ right๋ฅผ ๋ฐ”๊ฟ”์ค€๋‹ค.
18+
// TC: O(N)
19+
// SC: O(N)
20+
public TreeNode invertTree(TreeNode root) {
21+
return invert(root);
22+
}
23+
24+
private TreeNode invert(TreeNode node) {
25+
if (node == null) {
26+
return node;
27+
}
28+
29+
node = swap(node);
30+
31+
invert(node.left);
32+
invert(node.right);
33+
34+
return node;
35+
}
36+
37+
private TreeNode swap(TreeNode node) {
38+
var temp = node.left;
39+
node.left = node.right;
40+
node.right = temp;
41+
42+
return node;
43+
}
44+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
class Solution {
17+
// ํ’€์ด : DFS ํƒ์ƒ‰์„ ํ†ตํ•ด ๋ฆฌํ”„ ๋…ธ๋“œ๊นŒ์ง€ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๊นŠ์ด๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
18+
// TC: O(N), SC: O(N)
19+
int answer = 0;
20+
21+
public int maxDepth(TreeNode root) {
22+
dfs(root, 1);
23+
24+
return answer;
25+
}
26+
27+
private void dfs(TreeNode node, int depth) {
28+
if (node == null) {
29+
return;
30+
}
31+
32+
if (depth > answer) {
33+
answer = depth;
34+
}
35+
36+
depth++;
37+
38+
dfs(node.left, depth);
39+
dfs(node.right, depth);
40+
}
41+
}

โ€Žreorder-list/jaejeong1.java

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import java.util.Stack;
2+
3+
// Definition for singly-linked list.
4+
class ListNode {
5+
6+
int val;
7+
ListNode next;
8+
9+
ListNode() {
10+
}
11+
12+
ListNode(int val) {
13+
this.val = val;
14+
}
15+
16+
ListNode(int val, ListNode next) {
17+
this.val = val;
18+
this.next = next;
19+
}
20+
}
21+
22+
class Solution {
23+
24+
public void reorderList(ListNode head) {
25+
// ํ’€์ด: ์—ญ์ˆœ์œผ๋กœ ์ €์žฅํ•  ์Šคํƒ์— node๋“ค์„ ๋„ฃ๊ณ , ๊ธฐ์กด node 1๊ฐœ/์Šคํƒ node 1๊ฐœ์”ฉ ์ด์–ด ๋ถ™์ธ๋‹ค
26+
// ์Šคํƒ์€ LIFO๋กœ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ reorderList๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค
27+
// TC: O(N)
28+
// SC: O(N)
29+
Stack<ListNode> stack = new Stack<>();
30+
31+
var curNode = head;
32+
while(curNode != null) {
33+
stack.push(curNode);
34+
curNode = curNode.next;
35+
}
36+
37+
curNode = head;
38+
var halfSize = stack.size() / 2; // ํ•œ๋ฒˆ์— 2๊ฐœ์”ฉ ์—ฐ๊ฒฐํ•˜๊ธฐ๋•Œ๋ฌธ์— ์ ˆ๋ฐ˜๊นŒ์ง€๋งŒ ๋Œ๋ฉด ๋จ
39+
for (int i=0; i<halfSize; i++) {
40+
var top = stack.pop();
41+
42+
var nextNode = curNode.next;
43+
curNode.next = top;
44+
top.next = nextNode;
45+
46+
curNode = nextNode;
47+
}
48+
49+
// ๋งŒ์•ฝ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜๋ฉด, ํ•˜๋‚˜์˜ ๋…ธ๋“œ๊ฐ€ ๋‚จ๊ธฐ ๋•Œ๋ฌธ์— next ๋…ธ๋“œ๋ฅผ null๋กœ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•œ๋‹ค.
50+
if (curNode != null) {
51+
curNode.next = null;
52+
}
53+
}
54+
}

0 commit comments

Comments
ย (0)