Menu
CoddyTech

Symmetric Tree

Otrzymujesz drzewo binarne zapisane w tablicy tree w kolejności poziomami. 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 tablica może kończyć się dodatkowymi wpisami -1. Zwróć true, jeśli drzewo jest swoim lustrzanym odbiciem względem pionowej linii przechodzącej przez korzeń, a w przeciwnym razie zwróć false. Zarówno kształt, jak i wartości muszą być zgodne.

Funkcja

isSymmetric(tree: integer-array) → boolean
treeinteger-array
drzewo binarne w kolejności poziomów, z -1 oznaczającym puste miejsce
Zwracaboolean
true, jeśli drzewo jest lustrzane, w przeciwnym razie false

Ograniczenia

  • 1 ≤ tree.length ≤ 32767
  • Każde tree[i] ma wartość -1 lub wartość spełniającą warunek 0 ≤ tree[i] ≤ 1000.
  • tree[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 głębokość wynosi najwyżej 14.

Przykłady

Wejście
tree = [1, 2, 2, 3, 4, 4, 3]
Wyjście
true
Wyjaśnienie
Złóż drzewo na pół. Dwie 2 o indeksach 1 i 2 spotykają się, zewnętrzne 3 o indeksach 3 i 6 spotykają się, a wewnętrzne 4 na pozycjach 4 i 5 spotykają się.

lock icon+16 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Jeśli kształt jest lustrzanym odbiciem samego siebie, ale niektóre wartości się różnią, jaka jest najmniejsza liczba wartości węzłów, które musisz zmienić, aby drzewo było symetryczne?

Zresetuj kod
def isSymmetric(tree):
    # Wpisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

tree = [1, 2, 2, 3, 4, 4, 3]

Oczekiwane

true