Postorden.
El algoritmo postorden, 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 izquierdo, luego el nodo derecho, y finalmente el nodo actual."
Si deseas conocer mas acerca de los otros dos algoritmos te recomendamos visitar nuestros blog:
Pre Orden: https://asimov.cloud/blog/programacion-5/recorrido-de-arboles-preorden-311
In Orden: https://asimov.cloud/blog/programacion-5/recorrido-de-arboles-inorden-309
De la mismas forma 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 Postorden.
Imagine que deseamos recorrer el siguiente árbol en Post Orden
El pseudocódigo seria el siguiente:
postorden(nodo):
si nodo no es nulo:
postorden(nodo.izquierdo)
postorden(nodo.derecho)
imprimir nodo.valor
Este pseudocódigo realiza un recorrido en postorden recursivo en un árbol binario. Comienza desde el nodo dado, recorre primero el subárbol izquierdo, luego el subárbol derecho y finalmente imprime el valor del nodo actual.
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 _postorden_recursivo(self, nodo):
# Si el nodo actual no es nulo
if nodo is not None:
# Recorrer el subárbol izquierdo
self._postorden_recursivo(nod.izquierda)
# Recorrer el subárbol derecho
self._postorden_recursivo(nodo.derecha)
# Imprimir el valor del nodo actual
print(nodo.valor, end=" ")
def recorrido_postorden(self):
# Iniciar el recorrido postorden desde la raíz del árbol
self._postorden_recursivo(self.raiz)
# Imprimir un salto de línea al final del recorrido
print()
Resultado:
3 4 2 9 8 6 5
Es posible que después de esto aun no encentres utilidad alguna en este algoritmo sin embargo es muy útil en la eliminación de nodos.
- Eliminación de nodos: Al recorrer el árbol en postorden, se puede eliminar de manera segura cada nodo del árbol, comenzando desde las hojas y avanzando hacia la raíz. Esto asegura que los nodos hijos de un nodo dado ya han sido procesados antes de que el nodo en sí mismo sea eliminado, evitando así problemas de referencias incorrectas o pérdida de información.