Menu
CoddyTech

Left View of Binary Tree

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

트리의 왼쪽에 서 있습니다. 각 레벨에서 노드 하나, 즉 가장 왼쪽 노드가 보이고, 그 레벨의 나머지 노드들은 그 뒤에 가려집니다. 위쪽 레벨부터 아래쪽 레벨 순서로 보이는 값을 반환하세요.

함수

leftView(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 = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]
출력
[3, 8, 6, 1]
설명
8은 리프이므로 세 번째와 네 번째 레벨에는 오른쪽 자식 5 아래의 6(인덱스 6)과 1(인덱스 13)만 있습니다. 그래도 이 값들을 볼 수 있습니다: [3, 8, 6, 1].
challenge icon

후속 질문

레벨 d는 인덱스 2^d-1부터 2^(d+1)-2까지 채웁니다. 큐나 재귀 없이 해당 범위를 순회하여 뷰를 만들 수 있나요? 패딩된 배열에서는 비용이 얼마나 들까요?

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

테스트 #1

테스트 #2

테스트 #3

인자

root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]

예상 출력

[3, 8, 6, 1]