111. Minimum Depth of Binary Tree
if not root: 루트 비어 있는 경우
return 0 : 깊이는 0
root 부터, 깊이는 1
자식이 둘다 없으면 leaf 노드 임
if not node.left and not node.right:
return 깊이 최소 값 업데이트
# 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 minDepth(self, root: Optional[TreeNode]) -> int:
if not root:
return 0 # 트리가 비어있는 경우 깊이는 0
res = [float("inf")] # 최소 깊이 찾아야 함
def dfs(node, depth):
if not node.left and not node.right: # 마지막 노드면
res[0] = min(res[0], depth) # 최소 깊이 찾는 문제
return
if node.left:
dfs(node.left, depth+1)
if node.right:
dfs(node.right, depth+1)
dfs(root, 1) # root 도 깊이는 1임
return res[0]
'LeetCode > 주제별 보충' 카테고리의 다른 글
BFS: Binary Tree Right Side View (1) | 2025.01.16 |
---|---|
Depth-First Search : Traversal 순회 (3가지, inorder, preorder, postorder) (0) | 2025.01.15 |
Graphs: 127. Word Ladder ★★★★★ (1) | 2024.12.23 |
BST: 4. Median of Two Sorted Arrays ★★★★★ (2) | 2024.12.21 |
Graphs: 130. Surrounded Regions★★ (0) | 2024.12.16 |