Maximum Depth of Binary Tree

제로콜라좋아요·2024년 6월 3일
0

algorithem

목록 보기
15/37

문제설명

이진 트리가 주어지면 최대 깊이를 반환합니다 .

이진 트리의 최대 깊이는 루트 노드에서 가장 먼 리프 노드까지 가장 긴 경로를 따라 있는 노드 수입니다.

예시 1 :

입력: 루트 = [3,9,20,null,null,15,7]
출력: 3

예 2:

입력: 루트 = [1,null,2]
출력: 2

제약:

트리의 노드 수가 범위 내에 있습니다 .[0, 104]
-100 <= Node.val <= 100

문제풀이

class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        if not root:
            return 0
        else:
            left_depth = self.maxDepth(root.left)
            right_depth = self.maxDepth(root.right)
            return max(left_depth, right_depth) + 1

<내 코드의 흐름>

  1. maxDepth 메서드는 root라는 매개변수를 받으며, 이는 이진 트리의 루트 노드입니다.
  2. Optional[TreeNode]는 root가 TreeNode 객체이거나 None일 수 있음을 나타냅니다.
  3. root가 None인지 확인합니다. 즉, 트리가 비어 있는지를 확인합니다.
  • 만약 root가 None이면 트리가 비어 있으므로, 최대 깊이는 0입니다.
  1. root가 None이 아닌 경우, 트리가 비어 있지 않으므로 왼쪽과 오른쪽 서브트리의 깊이를 각각 계산합니다.
  2. 왼쪽 서브트리의 깊이(left_depth)와 오른쪽 서브트리의 깊이(right_depth) 중 더 큰 값을 선택하고, 현재 노드를 포함하여 1을 더합니다.
  • 이진 트리의 최대 깊이를 계산할 때 현재 노드를 포함하여 1을 더하는 이유는 현재 노드 자체도 깊이에 포함되기 때문입니다.
profile
개발자계의 제로콜라

0개의 댓글