Preorden.
El algoritmo preorden, es uno de los 3 algoritmos mas comunes para recorrer arboles binarios :
- pre - Orden
- in - Orden
- post - Orden
"En este tipo de recorrido, primero se visita el nodo actual, luego el nodo izquierdo y finalmente el nodo derecho."
Si deseas conocer mas acerca de los otros dos algoritmos te recomendamos visitar nuestros blog:
In Orden: https://asimov.cloud/blog/programacion-5/recorrido-de-arboles-inorden-309
Post Orden:https://asimov.cloud/blog/programacion-5/recorrido-en-arboles-postorden-314#scrollTop=0
Del mismo modo si no comprendes bien que es un árbol binario continuación te explicamos que es :
Árbol Binario: Un árbol binario es una estructura de datos jerárquica en la que cada nodo tiene como máximo dos hijos, comúnmente llamados hijo izquierdo y hijo derecho.
Si aun tienes dudas sobre que es un árbol te recomendamos visitar otro blog sobre arboles binarios: https://asimov.cloud/blog/programacion-5/que-es-un-arbol-binario-de-busqueda-296..
Ejemplo de Recorrido en Preorden.
Imagine que deseamos recorrer el siguiente árbol en Pre Orden
El pseudocódigo seria el siguiente.
preorden(nodo):
si nodo no es nulo:
imprimir nodo.valor
preorden(nodo.izquierdo)
preorden(nodo.derecho)
El pseudocódigo realiza un recorrido preorden recursivo en un árbol binario. Comienza desde el nodo dado, imprime el valor del nodo actual y luego recorre primero el subárbol izquierdo y finalmente el subárbol derecho.
Codificación en Python
En blogs anteriores ya se programo un árbol binario por ello usaremos el código anterior y simplemente agregáremos un nuevo método inorden, para nuestra clase árbol binario. Si tienes duda de como se programo visita nuestro blog: https://asimov.cloud/blog/programacion-5/como-programar-un-arbol-binario-de-busqueda-en-python-303
def _preorden_recursivo(self, nodo):
# Si el nodo actual no es nulo
if nodo is not None:
# Imprimir el valor del nodo actual
print(nodo.valor, end=" ")
# Recorrer el subárbol izquierdo
self._preorden_recursivo(nodo.izquierda)
# Recorrer el subárbol derecho
self._preorden_recursivo(nodo.derecha)
def recorrido_preorden(self):
# Iniciar el recorrido preorden desde la raíz del árbol
self._preorden_recursivo(self.raiz)
# Imprimir un salto de línea al final del recorrido
print()
Resultado:
5 2 4 3 6 8 9
Aunque a diferencia de los algoritmos inorden , que regresa los elementos del árbol en orden, el algoritmo preorden no parece tener una aplicación realmente significativa; sin embargo en los árboles de búsqueda binarios, el recorrido preorden puede ser útil para obtener una lista ordenada de los elementos del árbol en función de su posición relativa en la estructura del árbol.