Menu
CoddyTech

Validate Binary Search Tree

Un árbol binario se almacena en el arreglo tree en orden de heap: la raíz está en el índice 0, los hijos del índice i están en 2*i+1 (izquierdo) y 2*i+2 (derecho), -1 marca un espacio vacío y el arreglo puede terminar con entradas -1 adicionales.

Escribe isValidBST, que devuelve true si el árbol es un árbol binario de búsqueda y false en caso contrario. En un árbol binario de búsqueda, el valor de cada nodo es estrictamente mayor que todos los valores de su subárbol izquierdo y estrictamente menor que todos los valores de su subárbol derecho.

Función

isValidBST(tree: integer-array) → boolean
treeinteger-array
el árbol binario en orden por niveles, con -1 para una posición vacía
Devuelveboolean
verdadero si el árbol es un árbol binario de búsqueda; falso en caso contrario

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.
  • Los valores pueden repetirse.

Ejemplos

Entrada
tree = [8, 3, 12, 1, 6, 10, 15]
Salida
true
Explicación
Si se lee en orden (subárbol izquierdo, nodo, subárbol derecho), los valores son 1, 3, 6, 8, 10, 12, 15. Aumentan estrictamente, así que cada nodo está en el lado correcto de cada antecesor.
challenge icon

Para ir más allá

El padre de un nodo está en el índice (i-1)/2, redondeado hacia abajo. ¿Puedes recorrer el árbol en orden con espacio adicional O(1), avanzando por los padres en lugar de usar una pila o recurrir a la recursión?

Restablecer código
def isValidBST(tree):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumento

tree = [8, 3, 12, 1, 6, 10, 15]

Salida Esperada

true