Menu
CoddyTech

Left View of Binary Tree

Otrzymujesz drzewo binarne jako tablicę root w kolejności kopcowej: 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), a -1 oznacza puste miejsce. Tablica może kończyć się dodatkowymi wpisami -1.

Stań po lewej stronie drzewa. Na każdym poziomie widzisz jeden węzeł — ten najbardziej po lewej; pozostałe węzły na tym poziomie są za nim ukryte. Zwróć widoczne wartości, od najwyższego poziomu w dół.

Funkcja

leftView(root: integer-array) → integer-array
rootinteger-array
drzewo w kolejności kopcowej, z wartością -1 w pustym miejscu
Zwracainteger-array
skrajna lewa wartość każdego poziomu, zaczynając od najwyższego

Ograniczenia

  • 1 ≤ root.length ≤ 32767
  • Każde root[i] ma wartość -1 lub wartość z zakresu 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.
  • Oba węzły potomne pustego pola również są puste, a drzewo ma co najwyżej 14 poziomów.

Przykłady

Wejście
root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]
Wyjście
[3, 8, 6, 1]
Wyjaśnienie
8 jest liściem, więc na trzecim i czwartym poziomie znajdują się tylko 6 (indeks 6) i 1 (indeks 13), oba pod prawym dzieckiem 5. I tak je widzisz: [3, 8, 6, 1].
challenge icon

Pytanie dodatkowe

Poziom d wypełnia indeksy od 2^d-1 do 2^(d+1)-2. Czy potrafisz zbudować widok, przeglądając te zakresy, bez kolejki ani rekurencji? Jaki jest koszt w przypadku dopełnionej tablicy?

Zresetuj kod
def leftView(root):
    # Wpisz kod tutaj

Test #1

Test #2

Test #3

Argument

root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]

Oczekiwany wynik

[3, 8, 6, 1]