You are on page 1of 53

LAB 06: rboles

IS241 ESTRUCTURA DE DATOS

Prof. J eny Cas tellares


Prof. Carlos Vila

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 1


Contenidos
Estructuras de Datos No Lineales: Introduccin
rboles
rboles Binarios
Arboles Binarios y Algoritmos fundamentales
Ejercicios
Bibliografa

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 2


Objetivos
Al finalizar esta sesin y concluir satisfactoriamente los ejercicios, el alumno habr adquirido las
habilidades de:
Add.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 3


Estructuras de Datos No
Lineales: Introduccin
IS241 ESTRUCTURA DE DATOS

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 4


rboles
Muchas veces los seres humanos nos inspiramos en la naturaleza para resolver nuestros
problemas.
En el caso de las estructuras de datos, cuando MiEmpresa
debemos representar jerarquas o taxonomas y
otro tipo de problemas un poco ms complejos,
nos es fcil pensar en ellas como estructuras Ventas Produccin I+D
arbreas invertidas en las cuales el elemento de
mayor jerarqua se considera como la raz, los
elementos de menor jerarqua ocupan los
niveles inferiores dentro de un orden estipulado ES Internacional Porttiles Sobremesa
permitiendo un manejo de informacin
adecuado del problema que deseamos modelar.
Europa Asia Amrica
Ejemplo de Informacin representada con rboles.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 5


Introduccin
El rbol es una estructura de datos muy importante en informtica y en ciencias de la
computacin. Los rboles son estructuras no lineales, al contrario de las listas y los arreglos que
son estructuras lineales.
Los rboles se utilizan para representar frmulas algebraicas, para organizar objetos en orden de
tal forma que las bsquedas sean muy eficientes y en aplicaciones diversas tales como la
inteligencia artificial o algoritmos de cifrado.
Casi todos los sistemas operativos almacenan sus archivos en rboles o estructuras similares a
rboles. Tambin los rboles se utilizan en el diseo de compiladores, procesado de texto y
algoritmos de bsqueda

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 6


rboles
IS241 ESTRUCTURA DE DATOS

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 7


Definicin y Caractersticas de un rbol
Definicin 1:
Un rbol consta de un conjunto finito de elementos llamados nodos
y un conjunto finito de lneas dirigidas, llamadas ramas, que
conectan los nodos.

Caractersticas:
Formado por una serie de nodos conectados por una serie de aristas
que verifican que:
Tiene un nico nodo raz
Cada nodo, excepto la raz, tiene un nico padre
Existe un nico camino (desde la raz hasta cada nodo)

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 8


Terminologa
Raz: nico nodo sin padre
Nodo padre: Un nodo es padre si tiene sucesores A

Nodo hijo: Son los sucesores de un nodo padre


Nodo interno: Tiene al menos un hijo B C D

Nodo hoja (externo): No tiene hijos


Descendiente directo: Hijo E F G H

Descendientes: Hijo, nieto...


Ascendientes: El padre y los abuelos I J K
Subrbol
Subrbol: rbol formado por un nodo y sus descendientes

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 9


Terminologa
Grado de un nodo: nmero de descendientes directos
Grado del rbol: mayor grado de sus nodos
rbol binario: rbol de grado 2
Cada nodo tiene como mucho dos descendientes directos

Nodos hermanos: Dos o ms nodos con el mismo padre se llaman hermanos


Lista = rbol degenerado de grado 1
Altura o profundidad: La altura o profundidad de un rbol es el nivel de la hoja del camino ms
largo desde la raz ms uno. Por definicin la altura de un rbol vaco es cero. La siguiente figura,
contiene nodos en tres niveles: 0, 1 y 2, su altura es 3.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 10


Terminologa
Nivel de un nodo: Es la distancia al nodo raz. La raz tiene una distancia de cero de s misma,
por eso se dice que est en el nivel cero. Los hijos del nodo raz estn en el nivel 1, sus hijos
estn en el nivel 2, y as sucesivamente. Los hermanos estn siempre en el mismo nivel, pero no
todos los nodos de un mismo nivel son necesariamente hermanos. La siguiente grfica ilustra
estos conceptos.

Padres: A, B, F
Hijos: B, E, F, C, D, G, H, I
Hermanos: {B, E, F}, {C, D}, {G, H, I}
Hojas: C, D, E, G, H, I

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 11


Terminologa
Camino: Es una secuencia de nodos en los que cada nodo es adyacente al siguiente. Cada nodo
del rbol puede ser alcanzado siguiendo un nico camino que comienza en el nodo raz, existe
un camino del nodo X al nodo Y, si existe una sucesin de nodos que permitan llegar desde X a Y.

camino(A,K) = {A,B,F,K}
B C D
camino(C,K) = {.}

E F G H

I J K

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 12


Terminologa
Definicin Recursiva: Un rbol se divide en
subrboles. Un subrbol es cualquier estructura
conectada por debajo del nodo raz. Cada nodo de
un rbol es la raz de un subrbol que se define por
el nodo y todos sus descendientes. El primer nodo
de un subrbol se conoce como el nodo raz del
subrbol y se utiliza para nombrar el subrbol.
Adems los subrboles se pueden subdividir en
subrboles.
rbol binario: Un rbol es binario si cada nodo
tiene como mximo 2 descendientes. (ver la
siguiente Grfica).

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 13


Vista Operacional de la Estructura rbol

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 14


rboles Binarios
IS241 ESTRUCTURA DE DATOS

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 15


rboles Binarios
Son estructuras de datos no lineales, tambin denominadas recursivas en razn de que su
construccin puede hacerse en la aplicacin de estructuras bsicas aplicadas sobre s mismas.
Un rbol binario es una estructura recursiva que consta de un elemento que denominaremos
raz y dos elementos adicionales que pueden ser vacos a los que denominaremos el subrbol
izquierdo y el subrbol derecho, los cuales a su vez son rboles con su respectiva raz, subrbol
izquierdo y subrbol derecho.

Raz

Subrbol Subrbol
izquierdo derecho

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 16


Operaciones
Tipo de dato: Dato que se almacena en los nodos del rbol.
Operaciones:
Crear rbol: Inicia el rbol como vaco
Construir: Crea un rbol con un elemento raz dos ramas, izquierda y derecha que son a su vez rboles.
EsVacio: Comprueba si el rbol no contiene nodos
Raiz: Devuelve el nodo raz
Izquierdo: Obtiene la rama o subrbol izquierdo de un rbol dado
Derecho: Obtiene la rama o subrbol derecho de un rbol dado
Borrar: Elimina del rbol el nodo con un elemento determinado
Pertenece: Determina si un elemento se encuentra en el rbol

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 17


Operaciones en rboles Binarios
Algunas de las operaciones tpicas que se realizan en los rboles binarios son las siguientes:
Determinar su altura.
Determinar su nmero de elementos
Hacer una copia
Visualizar el rbol binario en pantalla o en impresora
Determinar si dos rboles binarios son idnticos
Borrar (eliminar el rbol)
Si es un rbol de expresin, evaluar la expresin

Todas estas operaciones se realizan recorriendo el rbol de manera sistemtica. El recorrido


implica que la visita a cada nodo se debe hacer una sola vez.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 18


Representacin de los rboles Binarios
Un rbol binario se construye con nodos. Cada nodo debe contener el campo dato (datos a
almacenar) y dos campos de enlace (apuntador o referencia), uno al subrbol izquierdo y el otro
al subrbol derecho.
La siguiente grfica ilustra esta estructura.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 19


Conceptos de rboles Binarios
Definicin
Un rbol binario es un rbol cuyos nodos no pueden tener ms de dos subrboles. En un rbol
binario, cada nodo puede tener, cero, uno o dos hijos (subrboles). Se conoce el nodo de la
izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho. La siguiente grfica,
muestra un rbol binario
Un rbol binario es una estructura
recursiva. Cada nodo es la raz de su
propio subrbol y tiene hijos, que
son races de rboles, llamados
subrbol derecho e izquierdo del
nodo, respectivamente.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 20


Conceptos de rboles Binarios
Equilibrio
La distancia de un nodo a la raz determina la eficiencia con la que puede ser localizado. Dado un
nodo, se lo puede localizar mediante un solo camino de bifurcacin de ramas. Esta caracterstica
conduce al concepto de balance o equilibrio. Para determinar si un rbol est equilibrado se
calcula su factor de equilibrio.
El factor de equilibrio de un rbol binario es la diferencia en altura entre los subrboles derecho
e izquierdo. Si la altura del subrbol izquierdo es hI, y la altura del subrbol derecho es hD,
entonces el factor de equilibrio del rbol B se determina por la siguiente frmula:
B = hD - hI

Un rbol est perfectamente equilibrado si su equilibrio o balance es cero y sus subrboles son
tambin perfectamente equilibrados, por lo tanto, el factor de equilibrio de cada nodo puede
tomar los valores -1, 0, +1.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 21


Conceptos de rboles Binarios
rboles Binario Completos
Un rbol binario completo de profundidad n es un rbol en el que cada nivel, del 0 al nivel n-1,
tiene un conjunto lleno de nodos, y todos los nodos hoja a nivel n ocupan las posiciones ms a la
izquierda del rbol.
Un rbol binario completo que contiene 2^n nodos a nivel n es un rbol lleno. Un rbol lleno es
un rbol binario que tiene el mximo nmero de entradas para su altura.
Un rbol degenerado es aquel que cada nodo contiene solo un hijo. Un rbol degenerado es
equivalente a una lista enlazada.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 22


Conceptos de rboles Binarios
Clasificacin de rboles Binarios

La altura o profundidad de un rbol binario completo de n nodos se calcula mediante la


siguiente frmula:
h = |Log2n| + 1 (parte entera de Log2n +1)

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 23


Conceptos de rboles Binarios
rbol de Expresin
Una aplicacin importante de los rboles binarios son los rboles de expresiones. Una expresin
es una secuencia de tokens (componentes lxicos que siguen unas reglas establecidas). Un token
puede ser un operando o u operador.
La siguientes grfica muestra la expresin: a * (b + c) + d

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 24


Conceptos de rboles Binarios
Recorrido de un rbol
El recorrido de un rbol binario exigen que cada nodo sea visitado una sola vez. Existen dos
enfoques:
En el recorrido en profundidad, el proceso exige un camino desde la raz a travs de un hijo, al
descendiente ms lejano del primer hijo antes de proseguir a un segundo hijo. En otras palabras en el
recorrido en profundidad, todos los descendientes de un hijo se procesan antes del siguiente hijo.
En el recorrido en anchura, el proceso se realiza horizontalmente desde la raz a todos sus hijos; a
continuacin, a los hijos de sus hijos y as sucesivamente hasta que todos los nodos hayan sido
procesados. En el recorrido en anchura, cada nivel se procesa totalmente antes de que comience el
siguiente nivel.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 25


Recorrido en Preorden
El recorrido preorden (RID) conlleva los siguientes pasos, en los que el nodo raz va antes que los
subrboles:
1. Visitar el nodo raz ( R )
2. Recorrer el subrbol izquierdo (I) en preorden
3. Recorrer el subrbol izquierdo (D) en preorden

El algoritmo de recorrido tiene naturaleza recursiva. Primero se procesa la raz; a continuacin,


el subrbol izquierdo y posteriormente el subrbol derecho.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 26


Recorrido en Orden
El recorrido en orden (inorden IRD) procesa primero el subrbol izquierdo, despus el raz, y a
continuacin el subrbol derecho. El significado de in es que la raz se procesa entre los
subrboles. El mtodo conlleva los siguientes pasos:
1. Recorrer el subrbol izquierdo (I) en orden
2. Visitar el nodo raz (R)
3. Recorrer el subrbol izquierdo (D) en orden

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 27


Recorrido en Postorden
El recorrido postorden (IDR) procesa el nodo raiz (post) despus de que los subrboles izquierdo
y derecho se hayan procesado. Comienza situndose en la hoja ms a la izquierda, a
continuacin se procesa su subrbol derecho. Por ltimo se procesa su nodo raz. Las etapas del
algoritmo son:
1. Recorrer el subrbol izquierdo (I) en postorden
2. Recorrer el subrbol izquierdo (D) en postorden
3. Visitar el nodo raz (R)

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 28


Ejemplo 001: de Recorrido de un rbol
La siguiente grfica muestra un rbol binario y cmo seran el orden de los elementos en cada
uno de los tres recorridos.

Recorrido en preorden: A, B, D, E, C, F, G
Recorrido en orden (inorden): D, B,E, A, F, C, G
Recorrido en postorden: D, E, B, F, G, C, A
Recorrido en anchura: A, B, C, D, E, F, G

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 29


Implementacin de los Recorridos
Recorridos en Profundidad
Recorrido en Preorden
void preorden (Nodo aux)
{
if (aux != null)
{
visitar(aux);
preorden(aux.getIzquierdo());
preorden(aux.getDerecho());
}
}

Recorrido en orden (inorden)


void inorden(Nodo aux)
{
if(aux != null)
{
inorden(aux.getIzquierdo());
visitar(aux);
inorden(aux.getDerecho());
}
}

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 30


Implementacin de los Recorridos
Recorridos en Profundidad
Recorrido en Postorden
void postorden(Nodo aux)
{
if(aux != null)
{
postorden(aux.getIzquierdo());
postorden(aux.getDerecho());
visitar(aux);
}
}

Nota: El mtodo visitar, depende de la aplicacin que se est realizando.


void visitar (Nodo aux)
{
System.out.print(aux.getValor() + " " );
}

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 31


Arboles Binarios y
Algoritmos Fundamentales
IS241 ESTRUCTURA DE DATOS

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 32


Definicin
Un rbol binario de bsqueda (o un rbol binario ordenado) es aquel en que, dado un nodo,
todos los datos del subrbol izquierdo son menores que los datos de ese nodo, mientras que
todos los datos del subrbol derecho son mayores que ese nodo. Se denomina rbol binario de
bsqueda porque se puede buscar en ellos un trmino utilizando un algoritmo de bsqueda
binaria.
Ejemplo: Dibujar un rbol binario de bsqueda con los valores: 8, 3, 1, 20, 5, 4.
La respuesta se muestra en la siguiente grfica.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 33


Operaciones en rboles Binarios de
Bsqueda
Un rbol binario de bsqueda tambin tiene naturaleza recursiva (aunque sus operaciones
tambin pueden ser implementadas de manera iterativa). Estas operaciones son:
Bsqueda de un nodo. Devuelve la referencia al nodo del rbol o null.
Insercin de un nodo. Crea un nodo con su dato asociado y lo aade, en orden al rbol.
Borrado de un nodo. Busca el nodo del rbol que contiene el dato y lo quita. El rbol debe seguir siendo
de bsqueda.
Recorrido de un rbol. Los mismos recorridos de un rbol: preorden, inorden y postorden.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 34


Insertar un Nodo
Implementacin Iterativa
Para aadir un nodo al rbol, se sigue el camino de bsqueda y, al final del camino, se enlaza el
nuevo nodo; por consiguiente, siempre se inserta como hoja del rbol. El rbol que resulta
despus de insertar el nodo, sigue siendo de bsqueda.
Implementacin iterativa de la insercin
public void insertar (Object valor) throws Exception
{
int dato = (int) valor;
Nodo nuevo = new Nodo();
nuevo.setValor(dato);

if(raiz == null)
raiz = nuevo;
else {
// anterior: referencia al padre de aux
Nodo anterior = null;
// aux: auxiliar que va recorriendo los nodos, desde la raiz
Nodo aux = raiz;

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 35


Insertar un Nodo
Implementacin Iterativa

while (aux != null)


{
anterior = aux;
if (dato.esMenor(aux.getValor()))
aux = aux.getIzquierdo();
else if(dato.esMayor(aux.getValor()))
aux = aux.getDerecho();
else
throw new Exception("Dato duplicado");
}
if(dato.esMenor(anterior.getValor()))
anterior.setIzquierdo(nuevo);
else
anterior.setDerecho(nuevo);
}
}

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 36


Bsqueda
La bsqueda de un nodo comienza en el nodo raz y sigue estos pasos:
1. La clave buscada se compara con el nodo raz.
2. Si las claves son iguales, la bsqueda se detiene.
3. Si la clave buscada es mayor que la clave raz, la bsqueda se reanuda en el subrbol derecho. Si la
clave buscada es menor que la clave raz, la bsqueda se reanuda en el subrbol izquierdo.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 37


Bsqueda
Implementacin Iterativa
public Nodo buscar(Object valor)
{
int dato = (int)valor;

if(raiz == null)
return raiz;
else
{
// aux: auxiliar que va recorriendo los nodos, desde la raiz
Nodo aux = raiz;
while (aux != null)
{
if(dato.esIgual(aux.getValor()))
return aux;
if(dato.esMenor(aux.getValor()))
aux = aux.getIzquierdo();
else
aux = aux.getDerecho();
}
return null;
}
}

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 38


Bsqueda
Implementacin Iterativa
public Nodo buscar(Object valor)
{
int dato = (int)valor;

if(raiz == null)
return raiz;
else
{
// aux: auxiliar que va recorriendo los nodos, desde la raiz
Nodo aux = raiz;
while (aux != null)
{
if(dato.esIgual(aux.getValor()))
return aux;
if(dato.esMenor(aux.getValor()))
aux = aux.getIzquierdo();
else
aux = aux.getDerecho();
}
return null;
}
}

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 39


Eliminar un Nodo
La operacin de eliminacin de un nodo es tambin una extensin de la operacin de bsqueda,
si bien es ms compleja que la insercin, debido a que el nodo a suprimir puede ser cualquiera y
la operacin debe mantener la estructura del rbol binario de bsqueda despus de quitar el
nodo.
Los pasos a seguir son:
1. Buscar en el rbol para encontrar la posicin del nodo a eliminar.
2. Si el nodo a suprimir tiene menos de dos hijos, reajustar los enlaces de su antecesor.
3. Si el nodo tiene dos hijos (rama izquierda y derecha), es necesario subir a la posicin que ste ocupa
el dato ms prximo de sus subrboles (el inmediatamente superior o el inmediatamente inferior)
con el fin de mantener la estructura del rbol binario de bsqueda.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 40


Eliminar un Nodo
Ejemplo 1: Cuando el nodo a eliminar tiene menos de dos hijos
Suprimir el elemento clave 36 del siguiente Cmo el nodo a eliminar es una hoja,
rbol binario de bsqueda: simplemente se reajustan los enlaces del nodo
procedente en el camino de bsqueda. El rbol
resultante es:

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 41


Eliminar un Nodo
Ejemplo 2: Cuando el nodo a eliminar tiene dos hijos
Borrar el elemento clave 60 del siguiente rbol En este caso se reemplaza por el elemento
mayor (55) en su subrbol izquierdo. Tambin
existe la opcin de reemplazarlo por el
elemento menor (70) de su subrbol derecho.
El rbol despus de eliminar el 60 quedara.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 42


Eliminar un Nodo
Ejercicio.
Borrar el elemento clave 50 del siguiente rbol.
Qu caso es?

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 43


Eliminar
Implementacin Iterativa
public boolean eliminar(Object valor)
{
int dato = (int) valor;
// Buscar el nodo a eliminar y su antecesor

Nodo antecesor = null; // antecesor del nodo a eliminar


// aux: auxiliar que va recorriendo los nodos, desde la raiz
Nodo aux = raiz;
while(aux != null) {
if(dato.esIgual(aux.getValor())) {
break;
}
antecesor = aux;
if(dato.esMenor(aux.getValor()))
aux = aux.getIzquierdo();
else
aux = aux.getDerecho();
}
if(aux == null)
return false; // dato no encontrado
// Si llega a este punto, el nodo a eliminar existe y es aux, y su antecesor es antecesor

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 44


Eliminar
Implementacin Iterativa
// Examinar cada caso

// 1. Si tiene menos de dos hijos, incluso una hoja, reajustar los enlaces de su antecesor
if(aux.getIzquierdo() == null)
if(aux.getValor().esMenor(antecesor.getValor()))
antecesor.setIzquierdo(aux.getDerecho());
else
antecesor.setDerecho(aux.getDerecho());

else if(aux.getDerecho() == null)


if(aux.getValor().esMenor(antecesor.getValor()))
antecesor.setIzquierdo(aux.getIzquierdo());
else
antecesor.setDerecho(aux.getIzquierdo());

// El nodo a eliminar tiene rama izquierda y derecha


reemplazarPorMayorIzquierdo(aux);

aux = null;
return true;
}

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 45


Eliminar
Implementacin Iterativa
private void reemplazarPorMayorIzquierdo(Nodo act)
{
Nodo mayor = act;
Nodo ant = act;
mayor = act.getIzquierdo();

// Buscar el mayor de la rama izquierda


// ant es el antecesor de mayor
while(mayor.getDerecho() != null)
{
ant = mayor;
mayor = mayor.getDerecho();
}
act.setValor(mayor.getValor()); // reemplaza

// reajuste
if(ant == act)
ant.setIzquierdo(mayor.getIzquierdo());
else
ant.setDerecho(mayor.getIzquierdo());
}

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 46


Ejercicio 001
Hacer un programa completo en java que permita implementar todas las operaciones de un
rbol binario de bsqueda: insertar, buscar, eliminar, recorridos (preorden, inorden, postorden).
Preferiblemente de las operaciones bsicas elaborar la versin recursiva y la versin iterativa.
Adems crear un ClienteMain que permita probar la correcta funcionalidad de las operaciones.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 47


Ejercicio 001
Diagrama de Clases

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 48


Caso de Estudio
IS241 ESTRUCTURA DE DATOS

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 49


Caso de Estudio: Uso de rboles Binarios
Eficiencia en la Bsqueda de un rbol Equilibrado
La eficiencia de una bsqueda en un rbol binario ordenado vara entre O(n) y O(Log(n)),
dependiendo de la estructura que presente el rbol.
La estructura del rbol depende del orden en que sean aadidos los datos. As, si todos los
elementos se insertan en orden creciente o decreciente, el rbol tendr todas las ramas
izquierdas o derechas, respectivamente. En este caso, la bsqueda en dicho rbol ser
totalmente secuencial.
Sin embargo, si el rbol est equilibrado, las comparaciones para buscar un elemento sern
mximo Log2(n).
Para optimizar los tiempos de bsqueda en los rboles ordenados surgen los rboles casi
equilibrados, en la que la complejidad de la bsqueda es logartmica, O(Log(n)).

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 50


Caso de Estudio: Uso de rboles Binarios
rbol Binario Equilibrado. rboles AVL
Un rbol totalmente equilibrado se caracteriza porque la altura
de la rama izquierda es igual que la altura de la rama derecha
para cada uno de los nodos del rbol.
Un rbol equilibrado o AVL es un rbol binario de bsqueda en
las que las alturas de los rboles izquierdo y derecho de
cualquier nodo difieren como mximo en 1.
A cada nodo se asocia el parmetro denominado factor de
equilibrio o balance de nodo, el cual se define como la altura
del subrbol derecho menos la altura del subrbol izquierdo. El
factor de equilibrio de cada nodo de un rbol equilibrado
puede tomar valores: 1, -1 0.
Nota: La altura o profundidad de un rbol binario es el nivel mximo de sus hojas ms uno. La
altura de un rbol nulo se considera cero.

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 51


Ejercicios Propuestos
IS241 ESTRUCTURA DE DATOS

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 52


Jose Fger, Libardo Pantoja. Estructuras de Datos.
Proyecto LATIn. Pg. 159-185.

Bibliografa
IS241 Estructura de Datos

13/07/2017 Prof. Jeny Castellares / Prof. Carlos Vila 53

You might also like