Recorrido preorden de árbol binario en C: ejercicio resuelto
Recorrido preorden de árbol binario en C: ejercicio resuelto
Si buscas recorrido preorden de árbol binario en C ejercicio resuelto, aquí tienes las dos implementaciones canónicas: la versión recursiva (natural y concisa) y la iterativa con pila explícita (necesaria para árboles muy profundos que agotarían la pila del sistema).
En preorden el orden de visita es raíz → hijo izquierdo → hijo derecho (NLR: Node-Left-Right).
Enunciado
Dado el árbol:
Imprime los nodos en orden preorden de forma recursiva e iterativa.
Solución en C
Resultado esperado
Errores frecuentes
- En la versión iterativa, apilar el hijo izquierdo antes que el derecho: como la pila es LIFO, hay que apilar derecho primero para que izquierdo se procese antes.
- No comprobar
NULLantes de acceder a los hijos:n->izq->datosin verificar quen->izq != NULLprovoca segmentation fault. - No liberar la memoria del árbol: cada nodo se asigna con
mallocy debe liberarse confreerecorriendo el árbol en postorden. - Confundir preorden con inorden: preorden visita la raíz primero (NLR); inorden visita la raíz entre los hijos (LNR).
Aplicación práctica
El recorrido preorden se usa para serializar/copiar un árbol (el orden de inserción reconstruye la misma estructura), para evaluar expresiones en notación prefija (árboles de expresión) y para imprimir la jerarquía de directorios de un sistema de ficheros.
Siguiente ejercicio recomendado
- Recorrido postorden de árbol binario en C: ejercicio resuelto
- Árbol binario en C: ejercicio resuelto
- Cola en C: ejercicio resuelto
- Todos los ejercicios de C
Práctica guiada y libro completo
Si quieres una ruta completa con progresión real de dificultad:
FAQ
¿Cuál es la diferencia entre preorden, inorden y postorden?
Los tres recorren los mismos nodos pero en distinto orden:
- Preorden (NLR): raíz primero, luego subárbol izquierdo, luego derecho.
- Inorden (LNR): subárbol izquierdo, raíz, subárbol derecho. En un BST produce los valores ordenados.
- Postorden (LRN): subárboles primero, raíz al final. Útil para liberar memoria.
¿Cuándo usar la versión iterativa frente a la recursiva?
La versión recursiva es más legible y suficiente para árboles de profundidad razonable. La iterativa es necesaria cuando el árbol puede ser muy profundo (miles de niveles) y la pila del sistema no es suficiente. En producción, los árboles auto-balanceados como AVL o Red-Black tienen profundidad O(log n), lo que hace la recursión segura.
¿El recorrido preorden es único para un árbol dado?
Sí: para un árbol binario dado, el preorden es único. Sin embargo, conocer solo el preorden no es suficiente para reconstruir el árbol; se necesita también el inorden (o marcar los nodos NULL explícitamente en la serialización).