From 8061a62b3696f5fce824a2630798d730e18db244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=A5=EC=9E=AC=EC=A0=95=20=5B=EC=BA=90=ED=85=8C?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=5D?= Date: Sat, 19 Oct 2024 20:15:32 +0900 Subject: [PATCH 1/5] Invert Binary Tree --- invert-binary-tree/jaejeong1.java | 44 +++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 invert-binary-tree/jaejeong1.java diff --git a/invert-binary-tree/jaejeong1.java b/invert-binary-tree/jaejeong1.java new file mode 100644 index 000000000..871aacaf3 --- /dev/null +++ b/invert-binary-tree/jaejeong1.java @@ -0,0 +1,44 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + // 풀이: child node로 내려가면서 재귀로 계속 left와 right를 바꿔준다. + // TC: O(N) + // SC: O(N) + public TreeNode invertTree(TreeNode root) { + return invert(root); + } + + private TreeNode invert(TreeNode node) { + if (node == null) { + return node; + } + + node = swap(node); + + invert(node.left); + invert(node.right); + + return node; + } + + private TreeNode swap(TreeNode node) { + var temp = node.left; + node.left = node.right; + node.right = temp; + + return node; + } +} \ No newline at end of file From 552e64363a384b70b5fd94788b60bd7e23027f0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=A5=EC=9E=AC=EC=A0=95=20=5B=EC=BA=90=ED=85=8C?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=5D?= Date: Mon, 21 Oct 2024 22:17:09 +0900 Subject: [PATCH 2/5] maximum depth of binary tree --- maximum-depth-of-binary-tree/jaejeong1.java | 41 +++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 maximum-depth-of-binary-tree/jaejeong1.java diff --git a/maximum-depth-of-binary-tree/jaejeong1.java b/maximum-depth-of-binary-tree/jaejeong1.java new file mode 100644 index 000000000..b2c060a28 --- /dev/null +++ b/maximum-depth-of-binary-tree/jaejeong1.java @@ -0,0 +1,41 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + // 풀이 : DFS 탐색을 통해 리프 노드까지 탐색하면서 깊이를 계산한다. + // TC: O(N), SC: O(N) + int answer = 0; + + public int maxDepth(TreeNode root) { + dfs(root, 1); + + return answer; + } + + private void dfs(TreeNode node, int depth) { + if (node == null) { + return; + } + + if (depth > answer) { + answer = depth; + } + + depth++; + + dfs(node.left, depth); + dfs(node.right, depth); + } +} From df3a36e3b1dc24436637b92adcb356bf045e40ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=A5=EC=9E=AC=EC=A0=95=20=5B=EC=BA=90=ED=85=8C?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=5D?= Date: Thu, 24 Oct 2024 20:29:29 +0900 Subject: [PATCH 3/5] reorder tree --- reorder-list/jaejeong1.java | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 reorder-list/jaejeong1.java diff --git a/reorder-list/jaejeong1.java b/reorder-list/jaejeong1.java new file mode 100644 index 000000000..fd95a6450 --- /dev/null +++ b/reorder-list/jaejeong1.java @@ -0,0 +1,54 @@ +import java.util.Stack; + +// Definition for singly-linked list. +class ListNode { + + int val; + ListNode next; + + ListNode() { + } + + ListNode(int val) { + this.val = val; + } + + ListNode(int val, ListNode next) { + this.val = val; + this.next = next; + } +} + +class Solution { + + public void reorderList(ListNode head) { + // 풀이: 역순으로 저장할 스택에 node들을 넣고, 기존 node 1개/스택 node 1개씩 이어 붙인다 + // 스택은 LIFO로 저장되기 때문에, 문제에서 요구하는 순서대로 reorderList를 만들 수 있다 + // TC: O(N) + // SC: O(2N) + Stack stack = new Stack<>(); + + var curNode = head; + while(curNode != null) { + stack.push(curNode); + curNode = curNode.next; + } + + curNode = head; + var halfSize = stack.size() / 2; // 한번에 2개씩 연결하기때문에 절반까지만 돌면 됨 + for (int i=0; i Date: Sat, 26 Oct 2024 00:50:05 +0900 Subject: [PATCH 4/5] add space --- invert-binary-tree/jaejeong1.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/invert-binary-tree/jaejeong1.java b/invert-binary-tree/jaejeong1.java index 871aacaf3..d72cf940f 100644 --- a/invert-binary-tree/jaejeong1.java +++ b/invert-binary-tree/jaejeong1.java @@ -41,4 +41,4 @@ private TreeNode swap(TreeNode node) { return node; } -} \ No newline at end of file +} From 5a0b4ee2eeff446fcf90d3c49ff8db7d2d39fee5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=A5=EC=9E=AC=EC=A0=95=20=5B=EC=BA=90=ED=85=8C?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=5D?= Date: Sat, 26 Oct 2024 01:06:26 +0900 Subject: [PATCH 5/5] add space --- reorder-list/jaejeong1.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reorder-list/jaejeong1.java b/reorder-list/jaejeong1.java index fd95a6450..6c090b8db 100644 --- a/reorder-list/jaejeong1.java +++ b/reorder-list/jaejeong1.java @@ -25,7 +25,7 @@ public void reorderList(ListNode head) { // 풀이: 역순으로 저장할 스택에 node들을 넣고, 기존 node 1개/스택 node 1개씩 이어 붙인다 // 스택은 LIFO로 저장되기 때문에, 문제에서 요구하는 순서대로 reorderList를 만들 수 있다 // TC: O(N) - // SC: O(2N) + // SC: O(N) Stack stack = new Stack<>(); var curNode = head;