Ir al contenido

IDEAS PRÁCTICAS · ASIMOV INGENIERÍA

Recorrido de Árboles (inorden)

inorden

Table of contents

No titles in the blog post

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:

Arbol Binario

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.