Menu
CoddyTech

Boundary Traversal of Binary Tree

Tablica root przechowuje drzewo binarne w porządku poziomami: 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. Liść to węzeł bez dzieci.

Zwróć granicę w kierunku przeciwnym do ruchu wskazówek zegara, zaczynając od korzenia:

  1. Korzeń.
  2. Lewa granica, od góry do dołu: zaczynając od lewego dziecka korzenia, przechodź do lewego dziecka, jeśli istnieje, a w przeciwnym razie do prawego dziecka. Zatrzymaj się przed liściem.
  3. Każdy liść, od lewej do prawej.
  4. Prawa granica, od dołu do góry: lustrzane odbicie lewej granicy, zaczynając od prawego dziecka korzenia.

Żaden węzeł nie jest wypisywany dwukrotnie, więc drzewo z jednym węzłem zwraca tylko korzeń.

Funkcja

boundaryTraversal(root: integer-array) → integer-array
rootinteger-array
drzewo binarne w kolejności poziomami, z wartością -1 oznaczającą puste miejsce
Zwracainteger-array
wartości graniczne, przeciwnie do ruchu wskazówek zegara od korzenia

Ograniczenia

  • 1 ≤ root.length ≤ 32767
  • Każde root[i] jest równe -1 lub ma wartość z zakresu 0 ≤ root[i] ≤ 105.
  • 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 głębokość wynosi najwyżej 14.
  • Wartości węzłów są różne.

Przykłady

Wejście
root = [7, 3, 9, 1, 5, 8, -1, -1, -1, 4, 6]
Wyjście
[7, 3, 1, 4, 6, 8, 9]
Wyjaśnienie
Po korzeniu 7 lewą granicą jest 3: jego potomek 1 jest liściem. Liście to 1, 4, 6, 8. Prawą granicą jest 9, nad liściem 8.
challenge icon

Pytanie dodatkowe

Jak wypisać granicę zgodnie z ruchem wskazówek zegara: korzeń, prawą krawędź od góry do dołu, liście od prawej do lewej, a następnie lewą krawędź od dołu do góry?

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

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

[7, 3, 1, 4, 6, 8, 9]