Preguntas calientes de la entrevista (verifique el árbol de búsqueda binaria)

Dado el nodo raíz de un árbol binario  root , determine si es un árbol de búsqueda binario válido.

Un  árbol de búsqueda binario válido se define de la siguiente manera:

  • El subárbol izquierdo de un nodo contiene solo números  menores que  el nodo actual.
  • El subárbol derecho de un nodo contiene solo  números mayores que  el nodo actual.
  • Todos los subárboles izquierdo y derecho deben ser árboles binarios

       El árbol binario satisface las tres condiciones anteriores.Algunos estudiantes dirán, ¿BST no es simplemente grande a la izquierda y pequeño a la derecha? ¿No debería simplemente juzgar root.val>root.left.val y root.val<root.right.val ?

         Esto definitivamente es incorrecto, porque la característica de BST izquierda pequeña y derecha grande significa que root.val es más grande que todos los nodos en el subárbol izquierdo y más pequeño que todos los nodos en el subárbol derecho, así que solo verifique si los dos nodos son Si es no es suficiente, podemos usar funciones auxiliares para aumentar la lista de parámetros de funciones, llevar información adicional en los parámetros y pasar el rango de valores razonables del siguiente nodo para su juicio

Debido a que el nodo raíz no tiene límite de rango al principio, nuestro límite puede ser infinito en su mínimo e infinito en su máximo.

isValidBST(root,Integer.MIN_VALUE,Integer.MAX_VALUE);

Si el nodo actual no cumple con el límite legal, devuelve falso directamente

 if(node.val<=lower||node.val>=upper){
            return false;
        }

Para recorrer el subárbol izquierdo y el subárbol derecho del nodo actual y actualizar el rango de valores

isValidBST(node.left,lower,node.val)&&isValidBST(node.right,node.val,upper);

resultado:

       Cuando vi el caso de prueba, de repente me iluminó. Cuando vi este número relativamente grande, vi que era un problema de tipo numérico, que estaba fuera de rango. Luego cambiamos el Integer a un Long más grande, y luego:

 

Supongo que te gusta

Origin blog.csdn.net/dfdbb6b/article/details/132261567
Recomendado
Clasificación