Anterior Home Siguiente

Arboles

Un árbol es una estructura dinámica no lineal constituida por nodos ordenados jerárquicamente, donde uno de ellos se distingue por ser la raíz del árbol.

La estructura de árbol se utiliza para representar la relación jerárquica entre sus elementos. El orden jerárquico se encuentra dado por un a relación padre-hijo.

Se puede representar un árbol de varias maneras:

Un ejemplo clásico de una estructura tipo árbol es el índice de un libro:

Otro ejemplo lo constituiría el directorio de un PC:

Terminología

Arboles Binarios

Un árbol binario es aquel en el que cada nodo tiene como máximo grado 2. Un árbol binario es equilibrado si para todos sus nodos la altura de sus subárboles se diferencia como máximo en 1 y es completo si todos sus nodos, excepto las hojas, tienen exactamente dos hijos. Un árbol binario en el que todos los nodos tienen dos hijos excepto las hojas y estas tienen todas el mismo nivel se dice que está lleno. El número de nodos de un árbol binario lleno será 2altura-1.

Conversión de una árbol general en un árbol binario

Existe un método para convertir un árbol general en binario

Recorrido de un árbol binario

Se denomina recorrido al proceso que permite acceder una sola vez a cada uno de los nodos del árbol

Existen tres formas de efectuar el recorrido, y todas ellas de naturaleza recursiva<(p>

Por ejemplo:

Preorden:* + A B C
Inorden: A + B * C
Postorden:A B + C *

Otro ejemplo:

Preorden:F A G B E I H C
Inorden:G A B E F I H C
Postorden:G E B A H C I F

Implementación

Un árbol binario se puede implementar con arreglos de la siguiente manera:

Se crean 3 arreglos:

nombre_Nodo[n] tipo String
izquierdo[n] tipo entero
derecho[n] tipo entero

El arreglo tipo cadena se inicia vacío y los arreglos de enteros con el valor -1

Ejemplo:

IndiceNombre_NodoIzquierdoDerecho
0A51
1B-13
2C-1-1
3E-1-1
4F07
5G-1-1
6H-1-1
7I62
8-1-1

Otra manera más elegante de implementar árboles, es usando estructuras con punteros, al igual como se hizo con las listas.

por ejemplo se podría utilizar una estructura como la siguiente:


typedef struct NODO
{
	char nombre[30];
	struct NODO *padre, *hijo_izquierdo, *hijo_derecho;
} arbol;


Anterior Home Siguiente



© 2000 Made in Bufoland