Menu
CoddyTech

Binary Tree Zigzag Level Order Traversal

Kamu mendapatkan binary tree yang disimpan dalam array root. Root berada pada indeks 0, anak-anak dari indeks i berada pada 2*i+1 (kiri) dan 2*i+2 (kanan), -1 menandai posisi kosong, dan array bisa diakhiri dengan entri -1 tambahan.

Kembalikan nilai node per level dalam urutan zigzag: level root dari kiri ke kanan, level berikutnya dari kanan ke kiri, dan seterusnya, bergantian hingga level terdalam. Ini juga disebut traversal level order spiral.

Fungsi

zigzagLevelOrder(root: integer-array) → integer-2d-array
rootinteger-array
pohon dalam urutan heap, dengan -1 untuk posisi kosong
Mengembalikaninteger-2d-array
satu daftar nilai per tingkat, mulai dari tingkat teratas, bergantian dari kiri ke kanan dan dari kanan ke kiri

Batasan

  • 1 ≤ root.length ≤ 32767
  • Setiap root[i] adalah -1 atau nilai dengan 0 ≤ root[i] ≤ 104.
  • Nilai node berbeda.
  • root[0] tidak pernah -1, jadi pohon memiliki setidaknya satu simpul.
  • array dapat diakhiri dengan entri -1 tambahan setelah simpul terakhir.
  • Kedua anak dari posisi kosong juga kosong, dan pohon memiliki paling banyak 14 tingkat.

Contoh

Input
root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]
Output
[[8], [5, 12], [1, 9, 14], [11, 2, 4]]
Penjelasan
Dibaca dari kiri ke kanan, level-levelnya adalah 8; 12, 5; 1, 9, 14; 4, 2, 11. Level 1 dan 3 dibaca dari belakang: [5, 12] dan [11, 2, 4].
challenge icon

Pertanyaan lanjutan

Bisakah kamu langsung menempatkan setiap nilai di posisi akhirnya dalam barisnya, tanpa membalik urutan dan tanpa stack kedua?

Reset kode
def zigzagLevelOrder(root):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

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