You are on page 1of 14

Los rboles son las estructuras de datos mas utilizadas, pero tambin una de las mas

complejas, Los rboles se caracterizan por almacenar sus nodos en forma jerrquica y no en
forma lineal como lasListas Ligadas, Colas,Pilas,etc., de las cuales ya hemos hablado
en das pasados.

Fig. 1: La imagen muestra la diferencia entra las estructuras de datos lineas y las no
lineales como lo son los rboles.

Datos importantes de los rboles


Para comprender mejor que es un rbol comenzaremos explicando como est estructurado.
Nodos: Se le llama Nodo a cada elemento que contiene un rbol.
Nodo Raz: Se refiere al primer nodo de un rbol, Solo un nodo del rbol puede ser la Raz.

Nodo Padre: Se utiliza este termino para llamar a todos aquellos nodos que tiene al menos
un hijo.
Nodo Hijo: Los hijos son todos aquellos nodos que tiene un padre.
Nodo Hermano: Los nodos hermanos son aquellos nodos que comparte a un mismo padre
en comn dentro de la estructura.
Nodo Hoja: Son todos aquellos nodos que no tienen hijos, los cuales siempre se
encuentran en los extremos de la estructura.
Nodo Rama: Estos son todos aquellos nodos que no son la raz y que ademas tiene al
menos un hijo.

Fig. 2: La imagen muestra de forma grfica cuales son los nodos Raz, Rama, Hoja.

Fig.3: La siguiente imagen muestra de forma grfica los nodos Padre, Hijo y Hermanos

Los arboles a demas de los nodos tiene otras propiedades importantes que son utilizadas en
diferente mbitos los cuales son:

Nivel: Nos referimos como nivel a cada generacin dentro del rbol. Por ejemplo, cuando a
un nodo hoja le agregamos un hijo, el nodo hoja pasa a ser un nodo rama pero a demas el
rbol crece una generacin por lo que el rbol tiene un nivel mas.Cada generacin tiene un
nmero de Nivel distinto que las demas generaciones.

Un rbol vaco tiene 0 niveles

El nivel de la Raz es 1

El nivel de cada nodo se calculado contando cuantos nodos existen sobre el,
hasta llegar a la raz + 1, y de forma inversa tambin se podra, contar
cuantos nodos existes desde la raz hasta el nodo buscado + 1.
Altura: Le llamamos Altura al nmero mximo de niveles de un rbol.

Fig. 4: En la imagen se muestran los Niveles y la Altura de un rbol.

La altura es calculado mediante recursividad tomando el nivel mas grande de los dos subrboles de forma recursiva de la siguiente manera:
altura = max(altura(hijo1), altura(hijo2),altura(hijoN)) + 1

Peso: Conocemos como peso a el nmero de nodos que tiene un rbol. Este factor es
importante por que nos da una idea del tamao del rbol y el tamao en memoria que nos
puede ocupar en tiempo de ejecucin(Complejidad Espacial en anlisis de algoritmos.)

Fig. 5: La imagen nos muestra como se calcula el peso de un rbol, el cual es la suma de
todos sus nodos, sin importar el orden en que sean contados.

El peso se puede calcular mediante cualquier tipo de recorrido el cual valla contando los nodo
a medida que avanza sobre la estructura. El peso es un rbol es igual a la suma del peso de
los sub-rboles hijos + 1
peso = peso(hijo1) + peso(hijo2) + peso(hijoN)+ 1
Nota: Los tipos de recorridos los veremos mas adelante.

Orden: El Orden de un rbol es el nmero mximo de hijos que puede tener un Nodo.

Fig. 6: Imagen que nuestra dos rboles con Orden = 2(Izquierda) y un segundo con Orden =
3(Derecha).

Notemos que un rbol con Orden = 1 no tendra sentido ya que seria una estructura lineal. ya
que cada nodo solo podra tener un Hijo y tendramos un rbol como la Imagen de la Fig.1.
Este valor no lo calculamos, si no que ya lo debemos conocer cuando diseamos nuestra
estructura, ya que si queremos calcular esto lo que obtendremos es el grado(hablamos de el
continuacin).
Grado: El grado se refiere al nmero mayor de hijos que tiene alguno de los nodos del rbol
y esta limitado por el Orden, ya que este indica el nmero mximo de hijos que puede tener un
nodo.

Fig. 7: En la imagen podemos apreciar un rbol con grado 2(Izquierda) y un otro con grado
3(Derecha).

El grado se calcula contando de forma recursiva el nmero de hijos de cada sub-rbol hijo y el
numero de hijos del nodo actual para tomar el mayor, esta operacin se hace de forma
recursiva para recorrer todo el rbol.
grado = max(contarHijos(hijo1),contarHijos(hijo2), contarHijos(hijoN), contarHijos(this))

Sub-rbol: Conocemos como Sub-rbol a todo rbol generado a partir de una seccin
determinada del rbol, Por lo que podemos decir que un rbol es un nodo Raz con N Subrboles.

Fig. 8: En la imagen de puede apreciar que un rbol esta compuesto por una seria de SubArboles los cual conforman toda la estructura.

Existen escenarios donde podemos sacar un Sub-rboles del rbol para procesarlo de forma
separada, de esta forma el Sub-rboles pasa a ser un rbol independiente, Tambin podemos
eliminar Sub-rboles completos, Agregarlos,entre otras operaciones.

rbol n-ario
los arboles n-arios son aquellos arboles donde el nmero mximo de hijos por
nodo es de N, en la figura 7 podemos apreciar dos rboles con grado 2 y grado 3, estos dos
arboles tambin los podemos definir como rbol n-ario con n = 2 y n=3 respectivamente.

rboles binarios
Esta estructura se caracteriza por que cada nodo solo puede tener mximo 2 hijo, dicho de
otra manera es un rbol n-ario de Grado 2.

Fig. 9: En la imagen podemos apreciar un rbol Binario.

rbol binario lleno: Es aquel que el que todos los nodos tiene cero o 2 hijos con
excepcin de la Raz.

Fig. 10: Podemos apreciar que el rbol de la derecha no esta lleno ya que uno de sus nodos
no cumple con la condicin cero o 2 hijos. ya que el nodo C solo tiene un hijo.

rbol binario perfecto: Es un rbol lleno en donde todos las Hojas estn en el
mismo Nivel.

Fig. 11: En la imagen podemos apreciar que el rbol de la izquierda tiene todas sus hojas al
mismo nivel y que ademas esta lleno, lo que lo convierte en un rbol binario perfecto. Sin
embargo, del lado derecho podemos ver que aunque el rbol esta lleno no tiene todas las
hojas al mismo nivel lo que hace que no sea un rbol binario perfecto pero si lleno.

Recorrido sobre rboles


Los recorridos son algoritmos que nos permiten recorrer un rbol en un orden especifico, los
recorridos nos pueden ayudar encontrar un nodo en el rbol, o buscar una posicin
determinada para insertar o eliminar un nodo.
Bsicamente podemos catalogar las bsqueda en dos tipos, las bsqueda en profundidad y
las bsquedas en amplitud.

Bsquedas no informadas
Las bsquedas no informadas son aquellas en que se realiza el viaje por todo el rbol sin
tener una pista de donde pueda estar el dato deseado. Este tipo de bsquedas tambin se
conocen como bsquedas a ciegas.

Para comprender mejor que es una bsqueda no informada expondremos el siguiente


ejemplo:
Imagine que vamos por la carretera y de repente encontramos dos caminos, el problema a qui
es que uno despus de 50 kilmetros esta en construccin y el otro nos lleva a nuestro
destino, sin embargo ninguno de los caminos tiene sealamiento. Lo que tendramos que
hacer es recorrer el primero camino y despus de 50 kilmetros encontrarnos con que el
camino esta en construccin, entonces tendramos que regresar para irnos por el segundo
camino,el cual nos lleva a nuestro destino(Para esto ya recorrimos los 50 kilmetros de ida y
los 50 kilmetros de regreso lo que nos da 100 kilmetros mas a nuestra ruta).
A este tipo de escenarios en los cuales las bsquedas de hacen a ciegas los conocemos
como bsquedas no informadas.
Las siguientes mtodos de bsqueda que veremos a continuacin(Bsqueda en profundad y
Bsqueda en amplitud) pertenecen a las bsquedas no informadas.

Bsqueda en profundidad
Recorrido Pre-orden: El recorrido inicia en la Raz y luego se recorre en pre-orden cada
unos de los sub-rboles de izquierda a derecha.
Esta definicin puede ser un poco compleja de entender por lo que mejor les dejo la siguiente
imagen.

Fig. 12:En la imagen podemos ver el orden en que es recorrido el rbol iniciando desde la
Raz.

Fig. 13: Codigo de una funcin recursiva que recorre un rbol en preorden.

Recorrido Pos-orden: Se recorre el pos-orden cada uno de los sub-rboles y al final se


recorre la raz.
Para comprender mejor esta definicin observemos la siguiente imagen:

Fig. 14: En la imagen podemos observar como se realiza el recorrido en Pos-Orden, Sin
embargo es importante notar que el primer nodo que se imprime no es la Raiz pues en este
recorrido la Raz de cada Sub-rbol es procesado al final, ya que toda su descendencia ha
sido procesada.

Fig. 15: Cdigo de una funcin recursiva que recorre un rbol en posorden

Recorrido in-orden: Se recorre en in-orden el primer sub-rbol, luego se recorre la raz y


al final se recorre en in-orden los demas sub-rboles

Fig. 16:En la imagen se muestra como es el recorrido In-Orden, Podemos apreciar que la
Raz no es el primero elemento en ser impreso pues este recorrido recorre su rama
izquierda, luego la raz del sub-rbol y luego la rama derecha.

Fig. 17: Cdigo de una funcin recursiva que recorre un rbol en inorden

Bsqueda en amplitud.
Se recorre primero la raz, luego se recorren los demas nodos ordenados por el nivel al que
pertenecen en orden de Izquierda a derecha.
Este tipo de bsqueda se caracteriza por que la bsqueda se hace nivel por nivel y de
izquierda a derecha.

Fig. 18: En la imagen se observa como es que un nodo es buscado mediante la bsqueda en
profundidad.

En la imagen podemos observa que el rbol es recorrido en su totalidad pero esto no siempre
es a s, ya que el algoritmo se detiene cuando el elemento buscado es encontrado.

Fig. 19: Cdigo de un funcin que recorre el rbol en amplitud.

Si observamos el cdigo de forma minuciosa podemos observar dos puntos muy interesantes,
el primero es que esta funcin no es recursiva, y la segunda es que se utiliza una Cola para
controlar el flujo del recorrido.
Los pasos para hacer el recorrido es el siguiente:
1.
2.

Se agrega la Raz a la cola de nodos por visitar


Mientras que la cola no este vaca se saca el primer elemento de la cola y
continuamos con el paso 3, Pero; si la cola esta vaca entonces nos vamos al
paso 5.

3.

Se valida si el elemento sacado de la pila es el que estamos buscando, Si lo


es, entonces hemos terminado, Si no lo es se agregan todos los hijos del nodo
a la pila de nodos pendientes por procesar.
4.
Regresamos al paso 2.
5.
Terminamos sin un resultado.

Conclusiones
Como hemos observado los arboles son estructuras bastante complejas, tiene una gran
aplicaciones en la ciencia y en la programacin convencional. En los ltimos aos este tipo de
estructuras ha sido utilizadas con mucha frecuencia en la Inteligencia artificial.
En esta publicacin hemos visto los puntos vas relevantes a en cuenta a lo que son los
arboles y los principales mtodos de bsqueda, sin embargo estamos lejos de cubrir este
tema en profundidad ya que existen muchsimos tipos de operaciones y algoritmos que se
pueden realizar sobre estas estructuras de datos.

Espero que este informacin te sirve de utilidad y no olvides darle like y recomendar esta
publicacin ya que esto me servir para crear mas y mejor material.

You might also like