Menu
CoddyTech

Range Sum of BST

İkili arama ağacı, dizi tree içinde seviye sırasıyla saklanır: kök 0 indeksindedir, i indeksindeki düğümün çocukları 2*i+1 (sol) ve 2*i+2 (sağ) indekslerindedir ve boş bir yeri -1 belirtir. İ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 düğümün değerinden büyüktür.

low ≤ v ≤ high koşulunu sağlayan tüm düğüm değerlerinin v toplamını döndür; böyle bir değer yoksa 0 döndür.

Fonksiyon

rangeSumBST(tree: integer-array, low: integer, high: integer) → integer
treeinteger-array
ikili arama ağacını seviye sırasına göre, boş bir 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
düşük ve yüksek değerleri de dâhil olmak üzere, aralarındaki düğüm değerlerinin toplamı

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, dolayısıyla ağacın en az bir düğümü vardır.
  • Dizi, son düğümden sonra fazladan -1 girdileri içerebilir.
  • 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 tamsayı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.
challenge icon

Ek soru

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

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

Test #1

Test #2

Test #3

Argümanlar

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

Beklenen Çıktı

88