Validar un árbol binario de búsqueda

Tiempo límite 2 s
Memoria límite 256 MB
Casos de prueba 16
Dificultad Medio Algoritmos
Mostrar (3) Árboles binariosÁrboles binarios de búsquedaDFS
Enviar solución

Puntos: 10

Tipos de problema
Lenguajes permitidos
C, C++, Java, Python, Rust

Di si el árbol binario dado es un árbol binario de búsqueda válido: para cada nodo, todos los valores de su subárbol izquierdo son estrictamente menores que el suyo y todos los de su subárbol derecho son estrictamente mayores.

Entrada

El árbol viene en el formato de LeetCode, en dos líneas: la primera tiene un entero \(k\) y la segunda \(k\) elementos separados por espacios, que son el recorrido por niveles del árbol. Cada elemento es el valor de un nodo o null si ese hijo no existe; los hijos de un null no se escriben y los null del final se omiten. Un árbol vacío se escribe con \(k = 0\) y una línea vacía.

El árbol tiene entre \(1\) y \(2 \cdot 10^4\) nodos y altura a lo más \(1000\); los valores cumplen \(-2^{31} \le v \le 2^{31} - 1\).

Salida

true si es un árbol binario de búsqueda o false si no.

Ejemplo 1

Entrada

3
2 1 3

Salida

true

Ejemplo 2

Entrada

7
5 1 4 null null 3 6

Salida

false

Ejemplo 3

Entrada

3
2 2 2

Salida

false

Ejemplo 4

Entrada

7
5 4 6 null null 3 7

Salida

false

Basado en el problema 98 de LeetCode, Validate Binary Search Tree, adaptado a entrada y salida estándar; enunciado redactado para este juez. Es parte de la lista Grind 75 de Yangshun Tay.


Comentarios

No hay comentarios por el momento.