Menu
CoddyTech

Range Sum of BST

Dizi seviyesinde sıralı olarak tree dizisinde saklanan bir ikili arama ağacı ve iki sayı low ile high veriliyor. Kök 0 indeksinde bulunur, i indeksindeki düğümün çocukları 2*i+1 (sol) ve 2*i+2 (sağ) indekslerinde bulunur, boş bir konumu -1 belirtir ve dizinin sonunda fazladan -1 girdileri olabilir. İkili arama ağacında, bir düğümün sol alt ağacındaki her değer düğümün değerinden küçüktür, sağ alt ağacındaki her değer ise daha büyüktür.

rangeSumBST adlı bir fonksiyon yazın. Bu fonksiyon, low ≤ v ≤ high koşulunu sağlayan tüm düğüm değerlerinin v toplamını, bu aralıkta hiçbir değer yoksa 0 döndürmelidir.

Fonksiyon

rangeSumBST(tree: integer-array, low: integer, high: integer) → integer
treeinteger-array
ikili arama ağacını seviye sırasına göre, boş konum için -1 kullanarak
lowinteger
sayılacak en küçük değer
highinteger
sayılacak en büyük değer
Döndürürinteger
low ve high arasındaki düğüm değerlerinin toplamı, her ikisi de dahil

Kısıtlar

  • 1 ≤ tree.length ≤ 32767
  • Her tree[i], -1 ya da 0 ≤ tree[i] ≤ 105 koşulunu sağlayan bir değerdir.
  • tree[0] hiçbir zaman -1 değildir, bu nedenle ağaçta en az bir düğüm vardır.
  • Dizi, son düğümden sonra fazladan -1 girdileriyle bitebilir.
  • Boş bir noktanın her iki çocuğu da boştur ve derinlik en fazla 14 olur.
  • Ağaç geçerli bir ikili arama ağacıdır, bu nedenle tüm değerleri birbirinden farklıdır.
  • 0 ≤ low ≤ high ≤ 105
  • Yanıt, 32 bitlik işaretli bir tam sayıya sığar.

Örnekler

Girdi
tree = [20, 8, 31, 3, 12, -1, 40, -1, -1, 10, 15]low = 9high = 31
Çıktı
88
Açıklama
9 ile 31 arasındaki değerler 10, 12, 15, 20 ve 31'dir; bunların toplamı 88 eder. 3, 8 ve 40 aralığın dışındadır.

lock iconGönderirken +14 gizli test

challenge icon

Ek soru

Aynı ağaçta binlerce farklı (low, high) sorgusunu yanıtlaman gerekseydi, her birini O(log n) sürede nasıl yanıtlayabilirdin?

Kodu sıfırla
def rangeSumBST(tree, low, high):
    # Kodu buraya yazın
Test durumları

Durum 1

Durum 2

Durum 3

Girdi

tree = [20, 8, 31, 3, 12, -1, 40, -1, -1, 10, 15]
low = 9
high = 31

Beklenen

88