Menu
CoddyTech

Top View of Binary Tree

힙 순서로 배열 root에 저장된 이진 트리가 주어집니다. 루트는 인덱스 0에 있고, 인덱스 i의 자식은 2*i+1(왼쪽)과 2*i+2(오른쪽)에 있으며, 빈 자리에는 -1이 있습니다.

루트는 열 0에 있습니다. 왼쪽 자식은 부모보다 한 열 왼쪽에, 오른쪽 자식은 한 열 오른쪽에 위치합니다. 위에서 보면 각 열에서 가장 얕은 노드가 보입니다. 깊이가 같으면 해당 레벨에서 왼쪽부터 먼저 나오는 노드(인덱스가 더 작은 노드)가 보입니다. 가장 왼쪽 열부터 가장 오른쪽 열까지 보이는 값을 반환하세요.

함수

topView(root: integer-array) → integer-array
rootinteger-array
힙 순서의 트리이며, 빈 위치는 -1로 표시합니다
반환값integer-array
각 열에서 위에서 본 값, 가장 왼쪽 열부터

제약 조건

  • 1 ≤ root.length ≤ 32767
  • 각 root[i]는 -1이거나 0 ≤ root[i] ≤ 104인 값이며, 같은 값은 두 번 나타나지 않습니다.
  • root[0]은 절대로 -1이 아니므로 트리에는 노드가 하나 이상 있습니다.
  • 배열은 마지막 노드 뒤에 -1 항목이 더 포함된 채로 끝날 수 있습니다.
  • 빈 자리의 두 자식도 모두 비어 있으며, 트리의 레벨은 최대 14입니다.

예제

입력
root = [5, 2, 9, 4, 7, 1, 6]
출력
[4, 2, 5, 9, 6]
설명
열은 왼쪽에서 오른쪽으로 4(열 -2), 2(-1), 루트 5(0), 9(1), 6(2)를 담고 있습니다. 7과 1도 열 0에 있지만, 루트는 그 위에 있습니다.
challenge icon

후속 질문

배열 대신 노드 객체를 사용하면 동률을 결정할 인덱스가 없습니다. 동률 규칙을 어떻게 명시하겠으며, 너비 우선 코드는 달라지나요?

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

테스트 #1

테스트 #2

테스트 #3

인자

root = [5, 2, 9, 4, 7, 1, 6]

예상 출력

[4, 2, 5, 9, 6]