Menu
CoddyTech

Maximum Depth of Binary Tree

쉬움트리 순회python iconjava iconcpp iconc iconjs icon+10

레벨 순서로 배열 tree에 저장된 이진 트리가 주어집니다. 루트는 인덱스 0에 있고, 인덱스 i에 있는 노드의 자식은 2*i+1(왼쪽)과 2*i+2(오른쪽)에 있으며, -1은 빈 위치를 나타내고 배열 끝에 추가 -1 항목이 있을 수 있습니다. 트리의 최대 깊이, 즉 루트에서 리프까지 이어지는 가장 긴 경로에 있는 노드의 수를 반환하세요.

함수

maxDepth(tree: integer-array) → integer
treeinteger-array
빈 위치에는 -1을 사용하여 레벨 순서로 표현한 이진 트리
반환값integer
루트에서 리프까지 이어지는 가장 긴 경로의 노드 수

제약 조건

  • 1 ≤ tree.length ≤ 32767
  • 각 tree[i]는 -1이거나 0 ≤ tree[i] ≤ 1000인 값입니다.
  • tree[0]은 절대 -1이 아니므로 트리에는 노드가 최소 하나 있습니다.
  • 배열은 마지막 노드 뒤에 추가적인 -1 항목이 있을 수 있습니다.
  • 비어 있는 위치의 두 자식도 모두 비어 있으며, 깊이는 최대 14입니다.

예제

입력
tree = [5, 8, 1, -1, 3, -1, -1, -1, -1, 6]
출력
4
설명
가장 긴 경로는 5, 8, 3, 6(인덱스 0, 1, 4, 9)이며, 노드 4개를 포함합니다. 1을 거치는 경로는 노드 2개 이후에 끝납니다.

lock icon제출 시 숨은 테스트 +13개

challenge icon

후속 질문

가장 긴 루트-리프 경로의 길이뿐 아니라 그 경로에 있는 값들을 어떻게 반환할까요? 여러 경로의 길이가 같다면 어떤 경로를 반환할까요? 그리고 계약에 이를 어떻게 명시할까요?

코드 초기화
def maxDepth(tree):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

tree = [5, 8, 1, -1, 3, -1, -1, -1, -1, 6]

기대값

4