Estructuras de Datos: Árboles Binarios y Métodos de Recorrido

Clasificado en Informática

Escrito el en español con un tamaño de 3,33 KB

Estructuras de Datos: Árboles

Árboles: Es una estructura no lineal cuyos nodos cumplen con las siguientes características:

  • a) Jerarquía: Existe una relación entre nodos del tipo padre-hijo.
  • b) Raíz: Todo nodo posee un padre, excepto la raíz.
  • c) Trayectoria: Todo nodo está unido a la raíz por una trayectoria única.
  • d) Recursividad: Todo nodo es, a su vez, un árbol.

Árbol Binario

Un árbol binario es aquel cuyos nodos tienen, a lo más, dos hijos.

Criterio de ingreso de datos a un árbol binario

Para organizar la información, se establece el siguiente criterio:

  • Un nodo o dato menor o igual a la raíz se destina hacia la rama izquierda.
  • Un nodo o dato mayor que la raíz se destina a la rama derecha.

Recorrido de un Árbol

Recorrer un árbol significa examinar cada uno de sus nodos sin repetición.

Métodos de recorrido

  • a) Pre-orden: Examinar raíz, examinar rama izquierda en Pre-orden, examinar rama derecha en Pre-orden.
  • b) In-orden: Examinar rama izquierda en In-orden, examinar raíz, examinar rama derecha en In-orden.
  • c) Post-orden: Examinar rama izquierda en Post-orden, examinar rama derecha en Post-orden, examinar raíz.

Ejemplo práctico:

          80
        /    \
      60      100
     /  \    /   \
    40  70  90   180
  • Pre-orden: 80, 60, 40, 70, 100, 90, 180.
  • In-orden: 40, 60, 70, 80, 90, 100, 180.
  • Post-orden: 40, 70, 60, 90, 180, 100, 80.

Módulo insertar_nodo_arbol(dir_ar, nodos)

  • Función: Devuelve la dirección del árbol con la incorporación del nuevo nodo.
  • Lógica de incorporación:
    • Nodo menor o igual que la raíz se determina a la rama izquierda.
    • Si es mayor, se destina a la rama derecha.
  • Implementación: La función utiliza recursividad.

Implementación en Lenguaje C

El siguiente programa crea un árbol binario:

#include <arbol.h>

void main() {
    arbol *par; // Puntero al árbol.
    par = NULL; // Inicialización de puntero vacío.
    par = insertar_nodo_arbol(par, 70);
    par = insertar_nodo_arbol(par, 100);
    par = insertar_nodo_arbol(par, 40);
    par = insertar_nodo_arbol(par, 10);
    printf("Árbol binario creado\n\n");
}

Ejercicio de Aplicación

Escribir las instrucciones necesarias para crear el siguiente árbol:

                  100
                /     \
              70       180
             /           \
           -5             300

Código de inserción dinámica:

void main() {
    arbol *par;
    int nodo, i;
    for(i = 0; i <= 10; i++) {
        printf("Ingrese número:\n\n");
        scanf("%d", &nodo);
        par = ingresar_nodo_arbol(par, nodo);
    }
}

Entradas relacionadas: