LeetCode 104. Maximum Depth of Binary Tree




플랫폼: LeetCode
번호: 104
제목: Maximum Depth of Binary Tree
링크: https://leetcode.com/problems/maximum-depth-of-binary-tree/
난이도: Easy
주어진 이진 트리(Binary Tree)의 최대 깊이(Maximum Depth)를 구하는 문제입니다.
이진 트리의 최대 깊이는 루트 노드(root node)에서 가장 멀리 떨어져 있는 리프 노드(leaf node)까지의 경로 중에서 가장 긴 경로에 포함된 노드의 개수로 정의됩니다.
리프 노드: 자식 노드가 없는 노드를 의미합니다.
예시 1:
입력: root = [3, 9, 20, null, null, 15, 7]
3
/ \
9 20
/ \
15 7출력: 3
설명: 루트(3)에서 가장 먼 리프 노드(15 또는 7)까지의 경로는 3개의 노드를 포함합니다.
예시 2:
입력: root = [1, null, 2]
출력: 2
이 문제는 트리의 구조적 특징을 활용하여 재귀(Recursion)적으로 접근하는 것이 매우 자연스럽습니다. 트리의 최대 깊이는 다음과 같은 재귀적인 관계로 생각할 수 있습니다.
기저 조건 (Base Case): 만약 현재 보고 있는 노드가 없다면 (root == None), 그 지점에서의 깊이는 0입니다. 더 이상 내려갈 경로가 없기 때문이죠.
재귀 단계 (Recursive Step): 만약 현재 노드가 있다면 (root != None), 이 노드를 포함한 트리의 최대 깊이는 다음과 같습니다:
왼쪽 서브트리의 최대 깊이를 재귀적으로 계산합니다 (maxDepth(root.left)).
오른쪽 서브트리의 최대 깊이를 재귀적으로 계산합니다 (maxDepth(root.right)).
두 서브트리의 ...
