Menu
CoddyTech

Binary Tree Zigzag Level Order Traversal

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

노드 값을 지그재그 순서로 레벨별로 반환하세요. 루트 레벨은 왼쪽에서 오른쪽으로, 다음 레벨은 오른쪽에서 왼쪽으로, 이후 가장 깊은 레벨까지 번갈아가며 진행합니다. 이를 나선형 레벨 순회라고도 합니다.

함수

zigzagLevelOrder(root: integer-array) → integer-2d-array
rootinteger-array
힙 순서로 된 트리이며, 빈 위치에는 -1을 사용합니다
반환값integer-2d-array
레벨마다 값 목록 하나씩, 최상위 레벨부터 시작하여 왼쪽에서 오른쪽, 오른쪽에서 왼쪽 순으로 번갈아 진행

제약 조건

  • 1 ≤ root.length ≤ 32767
  • 각 root[i]는 -1이거나 0 ≤ root[i] ≤ 104인 값입니다.
  • 노드 값은 서로 다릅니다.
  • root[0]은 절대 -1이 아니므로, 트리에는 노드가 적어도 하나 있습니다.
  • 배열은 마지막 노드 뒤에 추가 -1 항목이 있을 수 있습니다.
  • 비어 있는 위치의 두 자식도 모두 비어 있으며, 트리의 레벨은 최대 14개입니다.

예제

입력
root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]
출력
[[8], [5, 12], [1, 9, 14], [11, 2, 4]]
설명
왼쪽에서 오른쪽으로 읽으면 레벨은 8; 12, 5; 1, 9, 14; 4, 2, 11입니다. 레벨 1과 3은 역방향으로 진행됩니다: [5, 12] 및 [11, 2, 4].
challenge icon

후속 질문

모든 값을 뒤집거나 두 번째 스택을 사용하지 않고 각 행의 최종 위치에 바로 넣을 수 있나요?

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

테스트 #1

테스트 #2

테스트 #3

인자

root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]

예상 출력

[[8], [5, 12], [1, 9, 14], [11, 2, 4]]