Skip to content

Commit b94c8ab

Browse files
committed
2 parents a5c5aba + 0f3f754 commit b94c8ab

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
from collections import deque
2+
3+
# Definition for a binary tree node.
4+
# class TreeNode:
5+
# def __init__(self, val=0, left=None, right=None):
6+
# self.val = val
7+
# self.left = left
8+
# self.right = right
9+
class Solution:
10+
def maxDepth(self, root: Optional[TreeNode]) -> int:
11+
if not root:
12+
return 0
13+
14+
def bfs(n):
15+
queue = deque([n])
16+
depth = 0
17+
18+
while queue:
19+
depth += 1
20+
for _ in range(len(queue)):
21+
node = queue.popleft()
22+
if node.left:
23+
queue.append(node.left)
24+
if node.right:
25+
queue.append(node.right)
26+
return depth
27+
28+
def dfs(n):
29+
stack = [n]
30+
max_depth = 0
31+
visited = {n: 1}
32+
33+
while stack:
34+
node = stack.pop()
35+
depth = visited[node]
36+
max_depth = max(max_depth, depth)
37+
if node.left:
38+
visited[node.left] = depth + 1
39+
stack.append(node.left)
40+
if node.right:
41+
visited[node.right] = depth + 1
42+
stack.append(node.right)
43+
return max_depth
44+
45+
return dfs(root)
46+
47+
48+
"""
49+
bfs 방식으로 left나 right가 있으면 스택에 넣고 depth + 1, dfs보다 비효율인 듯
50+
"""

merge-two-sorted-lists/hu6r1s.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Definition for singly-linked list.
2+
# class ListNode:
3+
# def __init__(self, val=0, next=None):
4+
# self.val = val
5+
# self.next = next
6+
class Solution:
7+
# 시간복잡도: O(n + m) -> 두 리스트의 모든 노드를 한 번씩 방문
8+
# 공간복잡도: O(1) -> 기존 노드 재배치, 추가 메모리 거의 없음
9+
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
10+
merged_list = ListNode()
11+
tail = merged_list
12+
13+
while list1 and list2:
14+
if list1.val < list2.val:
15+
tail.next = list1
16+
list1 = list1.next
17+
else:
18+
tail.next = list2
19+
list2 = list2.next
20+
tail = tail.next
21+
22+
if list1:
23+
tail.next = list1
24+
else:
25+
tail.next = list2
26+
return merged_list.next

0 commit comments

Comments
 (0)