Menu
CoddyTech

Balanced Binary Tree

배열 root에는 이진 트리가 저장되어 있습니다. 루트는 인덱스 0에 있고, 인덱스 i의 자식은 2*i+1(왼쪽)과 2*i+2(오른쪽)에 있으며, -1은 비어 있는 위치를 나타내고, 끝에 여분의 -1 항목이 있을 수 있습니다.

트리가 높이 균형 상태이면 true를 반환하세요. 즉, 모든 노드에서 왼쪽 및 오른쪽 하위 트리의 높이 차이가 최대 1이어야 합니다. 그렇지 않으면 false를 반환하세요. 하위 트리의 높이는 가장 긴 하향 경로에 있는 노드의 수이며, 빈 하위 트리의 높이는 0입니다.

함수

isBalanced(root: integer-array) → boolean
rootinteger-array
레벨 순서로 표현한 이진 트리이며, 빈 자리는 -1로 표시합니다
반환값boolean
모든 노드에서 두 하위 트리의 높이 차이가 1 이하이면 true, 그렇지 않으면 false

제약 조건

  • 1 ≤ root.length ≤ 32767
  • 각 root[i]는 -1이거나 0 ≤ root[i] ≤ 105를 만족하는 값입니다.
  • root[0]은 절대 -1이 아니므로 트리에는 노드가 하나 이상 있습니다.
  • 배열은 마지막 노드 뒤에 추가적인 -1 항목이 올 수 있습니다.
  • 빈 자리의 두 자식도 모두 비어 있으며, 깊이는 최대 14입니다.
  • 노드 값은 서로 다릅니다.

예제

입력
root = [5, 2, 9, -1, -1, 7, 11]
출력
true
설명
루트의 왼쪽 하위 트리는 단일 노드 2이며, 높이는 1입니다. 오른쪽 하위 트리 9, 7, 11의 높이는 2입니다. 두 높이의 차이는 1이며, 다른 모든 노드는 높이가 같은 두 하위 트리를 가지고 있습니다.
challenge icon

후속 질문

명시적인 스택을 사용해 재귀 없이 트리를 확인할 수 있나요?

코드 초기화
def isBalanced(root):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

root = [5, 2, 9, -1, -1, 7, 11]

예상 출력

true