Inorden.
El algoritmo inorden, 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 actual y finalmente el nodo derecho".
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
Post Orden:https://asimov.cloud/blog/programacion-5/recorrido-en-arboles-postorden-314#scrollTop=0
Del la misma manera 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 Inorden
Imagine que deseamos recorrer el siguiente árbol en in Orden:
El pseudocódigo seria el siguiente
inorden(nodo):
si nodo no es nulo:
inorden(nodo.izquierdo)
imprimir nodo.valor
inorden(nodo.derecho)
El pseudocódigo realiza un recorrido inorden recursivo en un árbol binario. Comienza desde el nodo dado y recorre primero el subárbol izquierdo, luego imprime el valor del nodo actual y finalmente recorre 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 _inorden_recursivo(self, nodo):
# Si el nodo actual no es nulo
if nodo is not None:
# Recorrer el subárbol izquierdo
self._inorden_recursivo(nodo.izquierda)
# Imprimir el valor del nodo actual
print(nodo.valor, end=" ")
# Recorrer el subárbol derecho
self._inorden_recursivo(nodo.derecha)
# Función para iniciar el recorrido inorden
def recorrido_inorden(self):
# Iniciar el recorrido inorden desde la raíz del árbol
self._inorden_recursivo(self.raiz)
# Imprimir un salto de línea al final del recorrido
print()
Resultado :
2 3 4 5 6 8 9
Si eres observador notaste ya que se obtuvo los valores ordenados en forma ascendente, esto es algo característico del recorrido inorden.