Menu
CoddyTech

Bottom View of Binary Tree

배열 root에는 이진 트리가 들어 있습니다. 루트는 인덱스 0에 있고, 인덱스 i의 자식은 2i+1(왼쪽)과 2i+2(오른쪽)에 있으며, 빈 자리는 -1로 표시하고 끝에 추가로 -1 항목이 있을 수도 있습니다.

루트는 열 0에 있습니다. 왼쪽으로 한 단계 이동하면 열이 하나 왼쪽으로, 오른쪽으로 한 단계 이동하면 열이 하나 오른쪽으로 이동합니다. 아래에서 보았을 때 각 열에는 가장 깊은 노드가 표시되고, 깊이가 같으면 왼쪽에서 오른쪽으로 읽었을 때 해당 레벨에서 마지막 노드(인덱스가 더 큰 노드)가 표시됩니다. 보이는 값들을 가장 왼쪽 열부터 반환하세요.

함수

bottomView(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, 1, 9, 6]
설명
열 0에는 5가 있고, 두 단계 아래에는 7(인덱스 4)과 1(인덱스 5)이 있습니다. 같은 레벨에서 1이 더 나중에 오므로 표시됩니다. 열 -2, -1, 1, 2에는 4, 2, 9, 6이 있습니다.
challenge icon

후속 질문

열의 가장 깊은 수준에서 동률인 경우 동률인 모든 노드를 왼쪽에서 오른쪽 순서로 반환해야 한다면, 너비 우선 버전은 어떻게 달라질까요? 예제 1의 열 0에서는 어떤 결과가 나올까요?

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

테스트 #1

테스트 #2

테스트 #3

인자

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

예상 출력

[4, 2, 1, 9, 6]