Menu
CoddyTech

Binary Tree Right Side View

Tablica root przechowuje drzewo binarne. 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 dodatkowe wpisy -1 mogą występować na końcu.

Spójrz na drzewo z prawej strony. Na każdym poziomie widać dokładnie jeden węzeł — ten położony najbardziej na prawo — który zasłania pozostałe. Wypisz te wartości, zaczynając od poziomu korzenia i schodząc do najgłębszego poziomu.

Funkcja

rightSideView(root: integer-array) → integer-array
rootinteger-array
drzewo w porządku kopcowym, z -1 oznaczającym puste miejsce
Zwracainteger-array
wartość najbardziej po prawej stronie każdego poziomu, zaczynając od najwyższego

Ograniczenia

  • 1 ≤ root.length ≤ 32767
  • Każde 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 najwyżej 14 poziomów.

Przykłady

Wejście
root = [5, 2, 9, 7, 4, -1, 1, -1, 3]
Wyjście
[5, 9, 1, 3]
Wyjaśnienie
Po prawej stronie widać 5, 9 i 1 (indeks 6). Czwarty poziom zawiera tylko 3, na indeksie 8 pod 7 w lewym poddrzewie. Nic po prawej stronie nie sięga tak głęboko, więc 3 jest widoczne.
challenge icon

Pytanie dodatkowe

Jak uzyskać widok drzewa z prawej strony, w którym każdy węzeł może mieć dowolną liczbę dzieci, przechowywanych na liście od lewej do prawej?

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

Test #1

Test #2

Test #3

Argument

root = [5, 2, 9, 7, 4, -1, 1, -1, 3]

Oczekiwany wynik

[5, 9, 1, 3]