Menu
CoddyTech

Binary Tree Zigzag Level Order Traversal

Bir ikili ağaç, root dizisinde saklanıyor. Kök, 0 indeksinde bulunur; i indeksindeki düğümün çocukları 2*i+1 (sol) ve 2*i+2 (sağ) indekslerinde bulunur, -1 boş bir yeri belirtir ve dizinin sonunda fazladan -1 girdileri olabilir.

Düğüm değerlerini seviye seviye zikzak sırasıyla döndür: kökün seviyesini soldan sağa, sonraki seviyeyi sağdan sola ve en derin seviyeye kadar bu şekilde dönüşümlü olarak. Buna sarmal seviye sıralı dolaşım da denir.

Fonksiyon

zigzagLevelOrder(root: integer-array) → integer-2d-array
rootinteger-array
yığın sırasındaki ağaç; boş bir yer için -1
Döndürürinteger-2d-array
her seviye için bir değer listesi; önce en üst seviye, soldan sağa ve sağdan sola dönüşümlü olarak

Kısıtlar

  • 1 ≤ root.length ≤ 32767
  • Her root[i], -1 ya da 0 ≤ root[i] ≤ 104 koşulunu sağlayan bir değerdir.
  • Düğüm değerleri birbirinden farklıdır.
  • root[0] hiçbir zaman -1 değildir, bu nedenle ağaçta en az bir düğüm vardır.
  • Dizi, son düğümden sonra fazladan -1 girdileriyle bitebilir.
  • Boş bir noktanın her iki çocuğu da boştur ve ağaç en fazla 14 seviyelidir.

Örnekler

Girdi
root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]
Çıktı
[[8], [5, 12], [1, 9, 14], [11, 2, 4]]
Açıklama
Soldan sağa okunduğunda seviyeler 8; 12, 5; 1, 9, 14; 4, 2, 11 şeklindedir. 1. ve 3. seviyeler ters yönde ilerler: [5, 12] ve [11, 2, 4].
challenge icon

Ek soru

Her değeri ters çevirmeden ve ikinci bir yığın kullanmadan satırındaki son yerine doğrudan koyabilir misin?

Kodu sıfırla
def zigzagLevelOrder(root):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argüman

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

Beklenen Çıktı

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