¿Cómo funciona la recursividad en el árbol de búsqueda binaria en orden? ¿Cómo se pueden explicar las llamadas recursivas, sin resumirlas como llamadas de pila?

Cuando recurres, o tienes una función que se llama a sí misma, los argumentos cambiarán cada vez. En el caso de atravesar un árbol de búsqueda binario, cada llamada recursiva tiene un nodo diferente del árbol binario como argumento.

La llamada de función inicial se le da al nodo principal del árbol de búsqueda binario. Ese nodo tiene un valor. Si el valor es igual al valor que está buscando, lo encontró y puede devolver verdadero. Si es mayor, entonces sabe, si tiene alguna posibilidad de encontrar su valor, estará en la parte izquierda del árbol, por lo que llama recursivamente a la misma función, pasando el nodo secundario izquierdo como el nuevo argumento. De lo contrario (el valor del nodo es menor que su objetivo) use el nodo secundario derecho. Si desea llamar recursivamente utilizando un nodo secundario pero no hay un nodo secundario, ha llegado al final de su búsqueda y puede devolver falso.

Recorrido de orden que invoca algunos produce devolución de llamada en cada elemento:

  vacío traverse_inorder (Árbol T) {
	 if (T == NULL) devuelve;
	 traverse_inorder (T.left);
	 producir (T.item);
	 traverse_inorder (T.right);
 }

Por que funciona A medida que se realiza una llamada recursiva, se conserva el estado actual de ejecución de su función, incluidas todas las variables locales. Una vez que la llamada recursiva termina su tarea, la ejecución continúa donde se quedó, con todas las variables relevantes aún establecidas en los mismos valores. Entonces, por ejemplo, después de que la línea 3 se haya completado, T todavía se refiere al mismo nodo de árbol que antes, y la ejecución continúa en la línea 4.

¿Como funciona? ¿Cómo puede la llamada recursiva hacer lo que tiene que hacer sin estropear el estado actual de ejecución? Al asegurarse de que todas las variables locales que utiliza la llamada recursiva (en este caso, la variable T ) se encuentran en una ubicación diferente en la memoria. Es por eso que la “pila” es importante: es el mecanismo por el cual se asigna y libera nueva memoria para cada llamada recursiva.

¿Alguien puede explicar cómo funciona la recursión para un recorrido BST en orden?

Cuándo usar las estrategias de Recorrido de árbol de búsqueda binaria Preorden, Postorder e Inorder

¿Cómo funciona este algoritmo transversal de orden?

Concurso de programación, concurso de programación, programación informática en línea

geekforgeek.com

He tratado de mostrar la recursividad pictóricamente en este video.

More Interesting

¿En qué sitio web debo buscar gráficos en la estructura de datos?

¿Qué algoritmo se usa en WhatsApp?

¿Aprender más idiomas es bueno en comparación con el aprendizaje de estructuras de datos y algoritmos?

¿Vale la pena pagar 6 x $ 49 por una estructura de datos y especialización de algoritmos en Coursera?

¿Cómo estudiar efectivamente estructuras de datos y algoritmos? ¿Simplemente memorizo ​​cómo funcionan

¿Cuáles son los trabajos orientados a la lógica pura para los programadores?

¿Hay alguna forma científica de barrer un piso?

Dado un gráfico bipartito, ¿cómo puedo encontrar su subgrafo que es un gráfico bipartito completo y tiene la mayor cantidad de vértices?

¿Cómo buscarías una base de datos en tiempo real de Firebase con una subcadena?

¿Cómo pueden uno y qué algoritmos podrían usarse para entrenar una red neuronal profunda con una cantidad limitada de datos desaprender sus representaciones mal aprendidas?

Quiero comparar una consulta con varios documentos y asignarles una clasificación. ¿Qué algoritmo necesito usar?

¿De dónde provienen los datos de entrenamiento para analizar las consultas en inglés en un árbol para Facebook GraphSearch?

Cómo evitar buscar directamente una solución al resolver problemas de algoritmos

¿Cuáles son los ejemplos de colas en la vida real con algoritmo?

¿Qué tecnología utiliza X ?: ¿Cómo implementan las empresas de análisis (Mixpanel, KISSMetrics, etc.) el análisis de embudos?