Menu
CoddyTech

Top View of Binary Tree

Otrzymujesz drzewo binarne zapisane w tablicy root w porządku kopcowym: korzeń znajduje się pod indeksem 0, dzieci węzła o indeksie i pod indeksami 2*i+1 (lewe) i 2*i+2 (prawe), a wartość -1 oznacza puste miejsce.

Korzeń znajduje się w kolumnie 0; lewe dziecko jest o jedną kolumnę na lewo od rodzica, a prawe — o jedną kolumnę na prawo. Patrząc z góry, widzisz najpłytszy węzeł w każdej kolumnie; w przypadku remisu wybierz ten, który jako pierwszy występuje na swoim poziomie, licząc od lewej do prawej (ma mniejszy indeks). Zwróć widoczne wartości, od skrajnej lewej kolumny do skrajnej prawej.

Funkcja

topView(root: integer-array) → integer-array
rootinteger-array
drzewo w porządku kopca, z -1 w pustym miejscu
Zwracainteger-array
wartość widziana z góry w każdej kolumnie, zaczynając od skrajnej lewej kolumny

Ograniczenia

  • 1 ≤ root.length ≤ 32767
  • Każde root[i] jest równe -1 lub ma wartość spełniającą warunek 0 ≤ root[i] ≤ 104, a żadna wartość się nie powtarza.
  • root[0] nigdy nie jest -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 najwyżej 14 poziomów.

Przykłady

Wejście
root = [5, 2, 9, 4, 7, 1, 6]
Wyjście
[4, 2, 5, 9, 6]
Wyjaśnienie
Kolumny od lewej do prawej zawierają 4 (kolumna -2), 2 (-1), korzeń 5 (0), 9 (1) i 6 (2). 7 i 1 również znajdują się w kolumnie 0, ale korzeń jest nad nimi.
challenge icon

Pytanie dodatkowe

Zamiast tablicy mamy obiekty węzłów, więc nie ma indeksu, który rozstrzygałby remis. Jak sformułujesz zasadę rozstrzygania remisów i czy zmieni się Twój kod przeszukiwania wszerz?

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

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

[4, 2, 5, 9, 6]