이직하고만다(분노)
99클럽 코테 스터디 33일차 TIL + 리트코드 깊이너비탐색
xxo_ohii
2024. 8. 24. 00:14
728x90
오늘의 주제 : 깊이 너비 탐색문제
# Definition for a binary tree node.
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def countPairs(self, root: TreeNode, distance: int) -> int:
self.result = 0
def dfs(node):
if not node:
return []
# 리프 노드를 찾으면 [1] 반환 (자기 자신까지의 거리 1)
if not node.left and not node.right:
return [1]
# 왼쪽과 오른쪽에서 리프 노드까지의 거리를 계산
left_distances = dfs(node.left)
right_distances = dfs(node.right)
# 좋은 쌍을 계산
for ld in left_distances:
for rd in right_distances:
if ld + rd <= distance:
self.result += 1
# 각 리프 노드까지의 거리를 1씩 증가시켜 반환
return [d + 1 for d in left_distances + right_distances]
dfs(root)
return self.result
- 오늘의 회고록
일단 혼자 스택/큐에 대해 공부하고있는데
dfs가 자꾸 나오는거보니 중요하긴 한가보다....
스택/큐한다음엔 dfs, bfs 공부를 해야겠다고 생각했다
이제 근데 그건앎
이걸 dfs로 풀어야될지 bfs로 풀어야될지!!
걍 밑으로 늘어지면 dfs
뭔가 옆으로 늘어지면 bfs
이정도면 비기너로서의 탈출은 하고있는거같...?(아님말고)
728x90