Menu
CoddyTech

Binary Tree Level Order Traversal

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

노드 값을 레벨별로 반환하세요. 루트 값이 담긴 리스트를 먼저 반환하고, 그다음에는 한 레벨 아래의 값이 왼쪽에서 오른쪽 순서로 담긴 리스트를 반환합니다. 가장 깊은 레벨까지 같은 방식으로 반환하세요.

함수

levelOrder(tree: integer-array) → integer-2d-array
treeinteger-array
힙 순서로 된 트리이며, 빈 위치는 -1로 표시합니다
반환값integer-2d-array
레벨별 값 목록 하나씩, 최상위 레벨부터 시작해 각각 왼쪽에서 오른쪽으로

제약 조건

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

예제

입력
tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]
출력
[[4], [9, 2], [6, 8, 5], [3]]
설명
루트 4에는 인덱스 1과 2에 자식 9와 2가 있습니다. 인덱스 3은 비어 있으므로 세 번째 레벨에는 6(인덱스 4, 9 아래)이 있고, 그다음 8과 5(인덱스 5와 6, 2 아래)가 있습니다. 인덱스 9의 3은 6의 왼쪽 자식으로, 네 번째 레벨에 홀로 있습니다.

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

challenge icon

후속 질문

각 레벨을 정렬하지 않고 지그재그 순서로 반환할 수 있나요? 첫 번째 레벨은 왼쪽에서 오른쪽으로, 두 번째 레벨은 오른쪽에서 왼쪽으로, 이런 식으로요.

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

케이스 1

케이스 2

케이스 3

입력

tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]

기대값

[[4], [9, 2], [6, 8, 5], [3]]