File tree Expand file tree Collapse file tree 3 files changed +139
-0
lines changed
maximum-depth-of-binary-tree Expand file tree Collapse file tree 3 files changed +139
-0
lines changed Original file line number Diff line number Diff line change 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 number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
You canโt perform that action at this time.
0 commit comments