Menu
CoddyTech

Bottom View of Binary Tree

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

Korzeń znajduje się w kolumnie 0; krok w lewo przesuwa o jedną kolumnę w lewo, a krok w prawo o jedną kolumnę w prawo. Patrząc od dołu, w każdej kolumnie widać najgłębszy węzeł, a w przypadku remisu — ostatni na tym poziomie, czytając od lewej do prawej (ten o większym indeksie). Zwróć widoczne wartości, zaczynając od kolumny położonej najbardziej na lewo.

Funkcja

bottomView(root: integer-array) → integer-array
rootinteger-array
drzewo w kolejności kopcowej, z wartością -1 oznaczającą puste miejsce
Zwracainteger-array
wartość widoczna od dołu w każdej kolumnie, zaczynając od lewej

Ograniczenia

  • 1 ≤ root.length ≤ 32767
  • Każdy element root[i] jest równy -1 lub ma wartość spełniającą warunek 0 ≤ root[i] ≤ 104, a żadna wartość się nie powtarza.
  • 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 po ostatnim węźle.
  • Oboje dzieci pustego miejsca również są puste, a drzewo ma najwyżej 14 poziomów.

Przykłady

Wejście
root = [5, 2, 9, 4, 7, 1, 6]
Wyjście
[4, 2, 1, 9, 6]
Wyjaśnienie
Kolumna 0 zawiera 5 i, dwa poziomy niżej, 7 (indeks 4) oraz 1 (indeks 5). 1 znajduje się później na tym samym poziomie, więc jest widoczne. Kolumny -2, -1, 1 i 2 zawierają 4, 2, 9 i 6.
challenge icon

Pytanie dodatkowe

Jeśli przy remisie na najgłębszym poziomie kolumny należy zwrócić wszystkie węzły z remisem, od lewej do prawej, jak należałoby zmienić wersję przeszukiwania wszerz? Co zwróci kolumna 0 w przykładzie 1?

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

Test #1

Test #2

Test #3

Argument

root = [5, 2, 9, 4, 7, 1, 6]

Oczekiwany wynik

[4, 2, 1, 9, 6]