Menu
CoddyTech

Binary Tree Level Order Traversal

Tablica tree przechowuje drzewo binarne. Korzeń znajduje się pod indeksem 0, dzieci węzła pod indeksem i znajdują się pod indeksami 2*i+1 (lewe) i 2*i+2 (prawe), -1 oznacza puste miejsce, a na końcu mogą znajdować się dodatkowe wpisy -1.

Zwróć wartości węzłów poziomami: jedną listę dla każdego poziomu, od korzenia do najgłębszego poziomu, z wartościami uporządkowanymi od lewej do prawej.

Funkcja

levelOrder(tree: integer-array) → integer-2d-array
treeinteger-array
drzewo w porządku kopcowym, z wartością -1 oznaczającą puste miejsce
Zwracainteger-2d-array
jedna lista wartości na poziom, najpierw najwyższy poziom, każda od lewej do prawej

Ograniczenia

  • 1 ≤ tree.length ≤ 32767
  • Każdy element tree[i] to -1 lub wartość spełniająca warunek 0 ≤ tree[i] ≤ 1000.
  • tree[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 po ostatnim węźle.
  • Oboje dzieci pustego miejsca również są puste, a głębokość wynosi co najwyżej 14.

Przykłady

Wejście
tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]
Wyjście
[[4], [9, 2], [6, 8, 5], [3]]
Wyjaśnienie
Indeks 3 jest pusty, więc 9 ma tylko prawe dziecko: 6. Na trzecim poziomie znajdują się 6, 8, 5, a 3 pod indeksem 9, poniżej 6, jest samotnie na czwartym poziomie.
challenge icon

Pytanie dodatkowe

Czy możesz zwrócić poziomy w kolejności zygzakowatej: pierwszy od lewej do prawej, drugi od prawej do lewej i tak dalej, bez sortowania żadnego poziomu?

Zresetuj kod
def levelOrder(tree):
    # Wpisz tutaj kod

Test #1

Test #2

Test #3

Argument

tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]

Oczekiwany wynik

[[4], [9, 2], [6, 8, 5], [3]]