Menu
CoddyTech

Range Sum of BST

Binary search tree disimpan dalam array tree dengan urutan level: akar berada pada indeks 0, anak dari simpul pada indeks i berada di 2*i+1 (kiri) dan 2*i+2 (kanan), dan -1 menandai posisi kosong. Dalam binary search tree, setiap nilai pada subtree kiri sebuah simpul lebih kecil daripada nilai simpul tersebut, dan setiap nilai pada subtree kanannya lebih besar.

Kembalikan jumlah semua nilai simpul v dengan low ≤ v ≤ high, atau 0 jika tidak ada.

Fungsi

rangeSumBST(tree: integer-array, low: integer, high: integer) → integer
treeinteger-array
pohon pencarian biner dalam urutan level, dengan -1 untuk posisi kosong
lowinteger
nilai terkecil untuk dihitung
highinteger
nilai terbesar yang akan dihitung
Mengembalikaninteger
jumlah nilai node dari low hingga high, termasuk keduanya

Batasan

  • 1 ≤ tree.length ≤ 32767
  • Setiap tree[i] bernilai -1 atau nilai dengan 0 ≤ tree[i] ≤ 105.
  • tree[0] tidak pernah -1, jadi tree memiliki setidaknya satu node.
  • array mungkin diakhiri dengan entri -1 tambahan setelah node terakhir.
  • Kedua child dari tempat kosong juga kosong, dan kedalamannya paling banyak 14.
  • Pohon tersebut adalah binary search tree yang valid, jadi semua nilainya berbeda.
  • 0 ≤ low ≤ high ≤ 105
  • Jawabannya muat dalam bilangan bulat bertanda 32-bit.

Contoh

Input
tree = [20, 8, 31, 3, 12, -1, 40, -1, -1, 10, 15]low = 9high = 31
Output
88
Penjelasan
Nilai dari 9 hingga 31 adalah 10, 12, 15, 20, dan 31, yang jumlahnya 88. 3, 8, dan 40 berada di luar rentang tersebut.
challenge icon

Pertanyaan lanjutan

Jika kamu harus menjawab ribuan kueri (low, high) yang berbeda pada pohon yang sama, bagaimana kamu bisa menjawab setiap kueri dalam waktu O(log n)?

Reset kode
def rangeSumBST(tree, low, high):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

88