Menu
CoddyTech

Validate Binary Search Tree

Recibes un árbol binario almacenado en el array 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), -1 marca una posición vacía y el array puede terminar con entradas -1 adicionales.

Escribe una función llamada isValidBST que devuelva true si el árbol es un árbol de búsqueda binaria y false en caso contrario. En un árbol de búsqueda binaria, 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. Dos valores iguales nunca pueden estar ambos en un árbol válido.

Función

isValidBST(tree: integer-array) → boolean
treeinteger-array
el árbol binario en orden por niveles, con -1 para indicar una posición vacía
Devuelveboolean
verdadero si el árbol es un árbol de búsqueda binaria, 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.
  • La matriz 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
Cada nodo está en el lado correcto de cada nodo que tiene encima. Al leer en orden (subárbol izquierdo, nodo, subárbol derecho), los valores son 1, 3, 6, 8, 10, 12, 15, estrictamente crecientes, que es lo que proporciona un árbol de búsqueda.

lock icon+16 pruebas ocultas al enviar

challenge icon

Para ir más allá

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

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

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

true