File tree 3 files changed +139
-0
lines changed
maximum-depth-of-binary-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