Menu
CoddyTech

Binary Tree Right Side View

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

트리를 오른쪽에서 바라보세요. 각 레벨에서는 정확히 하나의 노드, 즉 가장 오른쪽에 있는 노드만 보이고 나머지는 가려집니다. 루트가 있는 레벨부터 가장 깊은 레벨까지 해당 값들을 나열하세요.

함수

rightSideView(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, 7, 4, -1, 1, -1, 3]
출력
[5, 9, 1, 3]
설명
오른쪽에서 5, 9, 1(인덱스 6)이 보입니다. 네 번째 레벨에는 왼쪽 서브트리에서 7 아래 인덱스 8에 있는 3만 있습니다. 오른쪽에는 그 깊이까지 도달하는 것이 없으므로 3이 보입니다.
challenge icon

후속 질문

모든 노드가 임의 개수의 자식을 가질 수 있고, 자식들이 왼쪽에서 오른쪽 순서로 리스트에 저장된 트리의 오른쪽에서 본 모습은 어떻게 구할 수 있을까요?

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

테스트 #1

테스트 #2

테스트 #3

인자

root = [5, 2, 9, 7, 4, -1, 1, -1, 3]

예상 출력

[5, 9, 1, 3]