Menu
CoddyTech

Range Sum of BST

Ein binärer Suchbaum wird im Level-Order-Verfahren im Array tree gespeichert: Die Wurzel befindet sich am Index 0, die Kinder des Knotens am Index i befinden sich bei 2*i+1 (links) und 2*i+2 (rechts), und -1 kennzeichnet eine leere Stelle. In einem binären Suchbaum ist jeder Wert im linken Teilbaum eines Knotens kleiner als der Wert des Knotens und jeder Wert in seinem rechten Teilbaum größer.

Gib die Summe aller Knotenwerte v mit low ≤ v ≤ high zurück oder 0, wenn es keine solchen Werte gibt.

Funktion

rangeSumBST(tree: integer-array, low: integer, high: integer) → integer
treeinteger-array
der binäre Suchbaum in Level-Reihenfolge, mit -1 für eine leere Position
lowinteger
der kleinste zu zählende Wert
highinteger
den größten zu zählenden Wert
Gibt zurückinteger
die Summe der Knotenwerte zwischen low und high, einschließlich low und high

Einschränkungen

  • 1 ≤ tree.length ≤ 32767
  • Jedes tree[i] ist -1 oder ein Wert mit 0 ≤ tree[i] ≤ 105.
  • tree[0] ist niemals -1, daher hat der Baum mindestens einen Knoten.
  • Das Array kann nach dem letzten Knoten mit zusätzlichen -1-Einträgen enden.
  • Beide Kindknoten einer leeren Stelle sind ebenfalls leer, und die Tiefe beträgt höchstens 14.
  • Der Baum ist ein gültiger binärer Suchbaum, daher sind alle seine Werte eindeutig.
  • 0 ≤ low ≤ high ≤ 105
  • Die Antwort passt in eine vorzeichenbehaftete 32-Bit-Ganzzahl.

Beispiele

Eingabe
tree = [20, 8, 31, 3, 12, -1, 40, -1, -1, 10, 15]low = 9high = 31
Ausgabe
88
Erklärung
Die Werte von 9 bis 31 sind 10, 12, 15, 20 und 31, was zusammen 88 ergibt. Die 3, 8 und 40 liegen außerhalb des Bereichs.
challenge icon

Weiterführende Frage

Wenn du Tausende verschiedener (low, high)-Abfragen für denselben Baum beantworten müsstest, wie könntest du jede einzelne in O(log n) Zeit beantworten?

Code zurücksetzen
def rangeSumBST(tree, low, high):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

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

Erwartete Ausgabe

88