Menu
CoddyTech

Binary Tree Zigzag Level Order Traversal

Otrzymujesz drzewo binarne zapisane w tablicy root. Korzeń znajduje się pod indeksem 0, dzieci węzła o indeksie i znajdują się pod indeksami 2*i+1 (lewe) i 2*i+2 (prawe), -1 oznacza puste miejsce, a tablica może kończyć się dodatkowymi wpisami -1.

Zwróć wartości węzłów poziom po poziomie w kolejności zygzakowatej: poziom korzenia od lewej do prawej, następny od prawej do lewej i tak dalej, naprzemiennie aż do najgłębszego poziomu. Nazywa się to również spiralnym przejściem poziomami.

Funkcja

zigzagLevelOrder(root: integer-array) → integer-2d-array
rootinteger-array
drzewo w porządku kopcowym, z wartością -1 w pustym miejscu
Zwracainteger-2d-array
jedna lista wartości na poziom, najpierw najwyższy poziom, naprzemiennie od lewej do prawej i od prawej do lewej

Ograniczenia

  • 1 ≤ root.length ≤ 32767
  • Każdy element root[i] ma wartość -1 lub wartość spełniającą warunek 0 ≤ root[i] ≤ 104.
  • Wartości węzłów są różne.
  • root[0] nigdy nie jest równe -1, więc drzewo ma co najmniej jeden węzeł.
  • Tablica może kończyć się dodatkowymi wpisami -1 za ostatnim węzłem.
  • Oboje dzieci pustego miejsca również są puste, a drzewo ma co najwyżej 14 poziomów.

Przykłady

Wejście
root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]
Wyjście
[[8], [5, 12], [1, 9, 14], [11, 2, 4]]
Wyjaśnienie
Czytane od lewej do prawej, poziomy to 8; 12, 5; 1, 9, 14; 4, 2, 11. Poziomy 1 i 3 są odczytywane od końca: [5, 12] i [11, 2, 4].
challenge icon

Pytanie dodatkowe

Czy możesz umieścić każdą wartość od razu na jej końcowym miejscu w wierszu, bez odwracania i bez drugiego stosu?

Zresetuj kod
def zigzagLevelOrder(root):
    # Napisz tutaj kod

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

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