Menu
CoddyTech

Kth Smallest Element in a BST

Yığın sıralamasında root dizisi olarak bir ikili arama ağacı alırsın: kök, 0 indeksindedir; i indeksindeki düğümün çocukları 2*i+1 (sol) ve 2*i+2 (sağ) indekslerindedir ve -1 boş bir yeri belirtir. Dizi, fazladan -1 girdileriyle bitebilir. Her düğümde, sol alt ağaç yalnızca daha küçük değerleri, sağ alt ağaç ise yalnızca daha büyük değerleri içerir.

Ağaçtaki, 1'den başlayarak sayılan k'inci en küçük değeri döndür.

Fonksiyon

kthSmallest(root: integer-array, k: integer) → integer
rootinteger-array
ikili arama ağacını seviye sırasına göre, boş noktalar için -1 kullanarak
kinteger
artan sırada bulmak için konum, 1'den başlayarak
Döndürürinteger
ağaçtaki k'ıncı en küçük değer

Kısıtlar

  • 1 ≤ root.length ≤ 32767
  • Her root[i], -1 ya da 0 ≤ root[i] ≤ 105 koşulunu sağlayan bir değerdir.
  • root[0] hiçbir zaman -1 olmaz, bu nedenle ağaçta en az bir düğüm vardır.
  • Dizi, son düğümden sonra fazladan -1 öğeleriyle bitebilir.
  • Boş bir noktanın her iki çocuğu da boştur ve derinlik en fazla 14 olur.
  • Sıralama kuralı her düğümde geçerlidir, bu nedenle hiçbir değer iki kez görünmez.
  • 1 ≤ k ≤ ağaçtaki düğüm sayısı.

Örnekler

Girdi
root = [41, 17, 65, 6, 29, -1, 90, -1, -1, 22]k = 4
Çıktı
29
Açıklama
Artan sırayla değerler 6, 17, 22, 29, 41, 65, 90 şeklindedir ve dördüncü değer 29'dur. Bu, kökün sol alt ağacındaki dört değerin en büyüğüdür.
challenge icon

Ek soru

If the tree changes often and you are asked for the k'inci en küçük değeri many times, what could each node store so that every query takes O(h)?

Kodu sıfırla
def kthSmallest(root, k):
    # Kodu buraya yazın

Test #1

Test #2

Argümanlar

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

Beklenen Çıktı

29