Menu
CoddyTech

Range Sum of BST

Un árbol de búsqueda binaria se almacena en el arreglo tree en orden por niveles: la raíz está en el índice 0, los hijos del nodo en el índice i están en 2*i+1 (izquierda) y 2*i+2 (derecha), y -1 marca una posición vacía. En un árbol de búsqueda binaria, todos los valores del subárbol izquierdo de un nodo son menores que el valor del nodo, y todos los valores de su subárbol derecho son mayores.

Devuelve la suma de todos los valores de los nodos v que cumplan low ≤ v ≤ high, o 0 si no hay ninguno.

Función

rangeSumBST(tree: integer-array, low: integer, high: integer) → integer
treeinteger-array
el árbol de búsqueda binaria en orden por niveles, con -1 para una posición vacía
lowinteger
el valor más pequeño que se debe contar
highinteger
el valor más grande que contar
Devuelveinteger
la suma de los valores de los nodos entre low y high, ambos incluidos

Restricciones

  • 1 ≤ tree.length ≤ 32767
  • Cada tree[i] es -1 o un valor con 0 ≤ tree[i] ≤ 105.
  • tree[0] nunca es -1, así que el árbol tiene al menos un nodo.
  • El arreglo puede terminar con entradas -1 adicionales después del último nodo.
  • Ambos hijos de un espacio vacío también están vacíos, y la profundidad es como máximo 14.
  • El árbol es un árbol binario de búsqueda válido, por lo que todos sus valores son distintos.
  • 0 ≤ low ≤ high ≤ 105
  • La respuesta cabe en un entero con signo de 32 bits.

Ejemplos

Entrada
tree = [20, 8, 31, 3, 12, -1, 40, -1, -1, 10, 15]low = 9high = 31
Salida
88
Explicación
Los valores de 9 a 31 son 10, 12, 15, 20 y 31, que suman 88. El 3, el 8 y el 40 quedan fuera del intervalo.
challenge icon

Para ir más allá

Si tuvieras que responder miles de consultas diferentes (low, high) sobre el mismo árbol, ¿cómo podrías responder cada una en tiempo O(log n)?

Restablecer código
def rangeSumBST(tree, low, high):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

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

Salida Esperada

88