Menu
CoddyTech

Kth Smallest Element in a BST

Recibes un árbol binario de búsqueda como el arreglo root en orden de heap: la raíz está en el índice 0, los hijos del índice i están en 2*i+1 (izquierda) y 2*i+2 (derecha), y -1 marca una posición vacía. El arreglo puede terminar con entradas -1 adicionales. En cada nodo, el subárbol izquierdo contiene solo valores menores y el derecho, solo valores mayores.

Devuelve el valor más pequeño número k del árbol, contando desde 1.

Función

kthSmallest(root: integer-array, k: integer) → integer
rootinteger-array
el árbol binario de búsqueda en orden por niveles, con -1 para una posición vacía
kinteger
la posición que se debe encontrar en orden creciente, empezando por 1
Devuelveinteger
el k-ésimo valor más pequeño del árbol

Restricciones

  • 1 ≤ root.length ≤ 32767
  • Cada root[i] es -1 o un valor con 0 ≤ root[i] ≤ 105.
  • root[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.
  • La regla de orden se cumple en cada nodo, por lo que ningún valor aparece dos veces.
  • 1 ≤ k ≤ el número de nodos del árbol.

Ejemplos

Entrada
root = [41, 17, 65, 6, 29, -1, 90, -1, -1, 22]k = 4
Salida
29
Explicación
En orden creciente, los valores son 6, 17, 22, 29, 41, 65, 90, y el cuarto es 29. Es el mayor de los cuatro valores del subárbol izquierdo de la raíz.
challenge icon

Para ir más allá

Si el árbol cambia con frecuencia y te piden muchas veces el valor que ocupa la posición k en orden ascendente, ¿qué podría almacenar cada nodo para que cada consulta tarde O(h)?

Restablecer código
def kthSmallest(root, k):
    # Escribe el código aquí

Prueba #1

Prueba #2

Argumentos

root = [41, 17, 65, 6, 29, -1, 90, -1, -1, 22]
k = 4

Salida Esperada

29