Menu
CoddyTech

Kth Smallest Element in a BST

Otrzymujesz binarne drzewo wyszukiwań jako tablicę root w porządku kopcowym: 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), a -1 oznacza puste miejsce. Tablica może kończyć się dodatkowymi wpisami -1. W każdym węźle lewe poddrzewo zawiera wyłącznie mniejsze wartości, a prawe poddrzewo — wyłącznie większe.

Zwróć k-tą najmniejszą wartość w drzewie, licząc od 1.

Funkcja

kthSmallest(root: integer-array, k: integer) → integer
rootinteger-array
drzewo wyszukiwań binarnych w kolejności poziomami, z -1 oznaczającym puste miejsce
kinteger
pozycja do znalezienia w kolejności rosnącej, zaczynając od 1
Zwracainteger
k-ta najmniejsza wartość w drzewie

Ograniczenia

  • 1 ≤ root.length ≤ 32767
  • Każde root[i] ma wartość -1 albo wartość spełniającą warunek 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 po ostatnim węźle.
  • Oboje dzieci pustego miejsca również są puste, a głębokość wynosi co najwyżej 14.
  • Reguła porządku obowiązuje w każdym węźle, więc żadna wartość nie pojawia się dwukrotnie.
  • 1 ≤ k ≤ liczba węzłów w drzewie.

Przykłady

Wejście
root = [41, 17, 65, 6, 29, -1, 90, -1, -1, 22]k = 4
Wyjście
29
Wyjaśnienie
W kolejności rosnącej wartości to 6, 17, 22, 29, 41, 65, 90, a czwarta z nich to 29. Jest to największa z czterech wartości w lewym poddrzewie korzenia.
challenge icon

Pytanie dodatkowe

Jeśli drzewo często się zmienia i wiele razy trzeba znaleźć k-tą najmniejszą wartość, co mogłoby przechowywać każde węzeł, aby każde zapytanie zajmowało O(h)?

Zresetuj kod
def kthSmallest(root, k):
    # Wpisz tutaj kod

Test #1

Test #2

Argumenty

root = [41, 17, 65, 6, 29, -1, 90, -1, -1, 22]
k = 4

Oczekiwany wynik

29