Menu
CoddyTech

Balanced Binary Tree

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ą znajdować się na końcu.

Zwróć true, jeśli drzewo jest zrównoważone pod względem wysokości, co oznacza, że w każdym węźle wysokości lewego i prawego poddrzewa różnią się najwyżej o 1, a w przeciwnym razie zwróć false. Wysokość poddrzewa to liczba węzłów na jego najdłuższej ścieżce w dół; puste poddrzewo ma wysokość 0.

Funkcja

isBalanced(root: integer-array) → boolean
rootinteger-array
drzewo binarne w kolejności poziomami, z wartością -1 w pustych miejscach
Zwracaboolean
prawda, jeśli wysokości dwóch poddrzew każdego węzła różnią się najwyżej o 1, w przeciwnym razie fałsz

Ograniczenia

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

Przykłady

Wejście
root = [5, 2, 9, -1, -1, 7, 11]
Wyjście
true
Wyjaśnienie
Lewe poddrzewo korzenia to pojedynczy węzeł 2 o wysokości 1. Jego prawe poddrzewo, zawierające węzły 9, 7, 11, ma wysokość 2. Różnią się o 1, a każdy inny węzeł ma dwa poddrzewa o równej wysokości.
challenge icon

Pytanie dodatkowe

Czy możesz sprawdzić drzewo bez rekurencji, używając jawnego stosu?

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

Test #1

Test #2

Test #3

Argument

root = [5, 2, 9, -1, -1, 7, 11]

Oczekiwany wynik

true