Menu
CoddyTech

Validate Binary Search Tree

Otrzymujesz drzewo binarne zapisane w tablicy tree w porządku 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.

Napisz funkcję o nazwie isValidBST, która zwraca true, jeśli drzewo jest binarnym drzewem wyszukiwań, a w przeciwnym razie false. W binarnym drzewie wyszukiwań wartość każdego węzła jest ściśle większa od wszystkich wartości w jego lewym poddrzewie i ściśle mniejsza od wszystkich wartości w jego prawym poddrzewie. Dwie równe wartości nigdy nie mogą jednocześnie występować w poprawnym drzewie.

Funkcja

isValidBST(tree: integer-array) → boolean
treeinteger-array
drzewo binarne w porządku poziomami, z wartością -1 oznaczającą puste miejsce
Zwracaboolean
true, jeśli drzewo jest binarnym drzewem wyszukiwania, 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] ≤ 105.
  • 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 za ostatnim węzłem.
  • Oboje dzieci pustego miejsca również są puste, a głębokość wynosi najwyżej 14.
  • Wartości mogą się powtarzać.

Przykłady

Wejście
tree = [8, 3, 12, 1, 6, 10, 15]
Wyjście
true
Wyjaśnienie
Każdy węzeł znajduje się po właściwej stronie każdego węzła nad nim. Odczytane w kolejności (lewe poddrzewo, węzeł, prawe poddrzewo) wartości to 1, 3, 6, 8, 10, 12, 15, czyli ciąg ściśle rosnący — właśnie taki, jaki daje drzewo wyszukiwań.

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

challenge icon

Pytanie dodatkowe

Rodzic węzła o indeksie i znajduje się pod indeksem (i-1)/2, zaokrąglonym w dół. Czy potrafisz przejść drzewo w kolejności inorder, używając dodatkowo O(1) miejsca i przemieszczając się przez rodziców zamiast używać stosu lub rekurencji?

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

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

tree = [8, 3, 12, 1, 6, 10, 15]

Oczekiwane

true