You are on page 1of 10

Los arboles binarios

Captulo 13. rboles. rboles binarios y rboles ordenados. Los rboles son
estructuras de datos no lineales y jerrquicos muy importantes. Estas estructuras son
notables en programacin avanzada. Los rboles binarios y los rboles binarios de bsqueda
se describen con rigor y profundidad por su importancia en el mundo actual de la
programacin tanto tradicional (fuera de lnea como en la !eb (en lnea.
Captulo 14. rboles de bsqueda equilibrados. Este captulo se dedica a la
programacin avanzada de rboles de bsqueda equilibrada. Estas estructuras de datos son
complejas y su dise"o y construccin requiere de estrategias y m#todos e$cientes para su
implementacin% sin embargo& su uso puede producir grandes mejoras al dise"o y
construccin de programas que sera muy difcil y por otros m#todos.
'rboles
(n rbol consta de un conjunto $nito de elementos& llamados nodos y de un conjunto $nito de
lneas dirigidas& llamadas ramas& que conectan los nodos.
)i un rbol no est vaco& entonces el primer nodo se llama raz.
Terminologa
(n nodo puede ser considerado como padre si tiene nodos sucesores
Estos nodos sucesores se llaman hijos. *or ejemplo& el nodo + es el padre de los ,ijos E y -.
El nivel de un nodo es su distancia desde el nodo raz. La altura de un rbol es el nivel de la ,oja
del camino ms largo desde el raz ms uno.
(n subrbol es cualquier estructura conectada por debajo del nodo raz. .ada nodo de un
rbol es la raz de un subrbol que se de$ne 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.
El primer nodo de un rbol& normalmente dibujado en la posicin superior& se denomina raz
del rbol.
/ Las 0ec,as que conectan un nodo con otro se llaman arcos o raas.
/ Los nodos terinales! esto es& nodos de los cuales no se deduce ningn nodo& se
denominan hojas.
/ Los nodos que no son ,ojas se denominan nodos internos.
La lon"itud de un camino es el nmero de arcos que contiene o& de forma equivalente& el
nmero de nodos del camino menos uno.
/ El nivel de un nodo es la longitud del camino que lo conecta al nodo raz.
/ La pro#undidad o altura de un rbol es la longitud del camino ms largo que conecta el
raz a una ,oja.
/ (n subrbol de un rbol es un subconjunto de nodos del rbol& conectados por ramas del
propio rbol& esto es& a su vez un rbol.
13.2. RBOLES BINARIOS
(n 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 ,ijos (subrboles. )e conoce el nodo de
la izquierda como hijo izquierdo y el nodo de la derec,a como hijo derecho.
(n rbol binario es una estructura recursiva.
(n rbol binario se divide en tres subconjuntos disjuntos1
234 5odo raz.
267& 68& ...6n4 )ubrbol izquierdo de 3.
297& 98& ...9n4 )ubrbol derec,o de 3.
Equilibrio
La distancia de un nodo a la raz determina la e$ciencia con la que puede ser localizado. *or
ejemplo& dado cualquier nodo de un rbol&
rboles binarios comle!os
(n rbol binario copleto de profundidad n es un rbol en el que para cada nivel& del 0 al
nivel n-1, tiene un conjunto lleno de nodos& y todos los nodos ,oja a nivel n ocupan las
posiciones ms a la izquierda del rbol.
La estructura de rbol binario constituye un tipo abstracto de datos; las operaciones bsicas
que de$nen el TAD rbol binario son las siguientes1
$ipo de dato 9ato que se almacena en los nodos del rbol.
%peraciones
CrearArbol 6nicia el rbol como vaco.
Construir .rea un rbol con un elemento raz y dos ramas& izquierda y derec,a que son a
su vez rboles.
EsVacio .omprueba si el rbol no tiene nodos.
aiz 9evuelve el nodo raz.
!zquierdo :btiene la rama o subrbol izquierdo de un rbol dado.
Derecho :btiene la rama o subrbol derec,o de un rbol dado.
"orrar Elimina del rbol el nodo con un elemento determinado.
#ertenece 9etermina si un elemento se encuentra en el rbol.
Oeraciones en "rboles binarios
'lgunas de las operaciones tpicas que se realizan en rboles binarios son las siguientes1
/ 9eterminar su altura.
/ 9eterminar su nmero de elementos.
/ ;acer una copia.
/ <isualizar el rbol binario en pantalla o en impresora.
/ 9eterminar si dos rboles binarios son id#nticos.
/ +orrar (eliminar el rbol.
/ )i es un rbol de e=presin& evaluar la e=presin.
>odas estas operaciones se pueden realizar recorriendo el rbol binario de un modo
sistemtico
ESTR# $T#RA %E #N ARBOL BINARIO
(n rbol binario se construye con nodos. .ada nodo debe contener el campo dato (datos a
almacenar y dos campos de enlace $apuntador%, uno al subrbol izquierdo &izquierdo! izdo'
y otro al subrbol derec,o &derecho! dcho'. El valor null indica un rbol o un subrbol vaco.
eresen!aci&n 'e un no'o
La clase 5odo agrupa a todos los campos de que consta1 dato& izdo (rama izquierda y dc,o
(rama derec,a. 'dems& dispone de dos constructores% el primero inicializa el campo dato a
un valor y los enlaces a null& en de$nitiva& se inicializa como ,oja y el segundo inicializa dato a
un valor y las ramas a dos subrboles.
$reaci&n 'e un "rbol binario
' partir del nodo raz de un rbol se puede acceder a los dems nodos del rbol& por ello se
mantiene la referencia a la raz del rbol. Las ramas izquierda y derec,a son& a su vez& rboles
binarios que tienen su raz& y as recursivamente ,asta llegar a las ,ojas del rbol. La clase
'rbol+inario tiene el campo raiz& un constructor que inicializa raiz y m#todos para implementar
las operaciones.
RBOL %E E()RESI*N
(na aplicacin muy importante de los rboles binarios son los rboles de e&presiones. (na
e(presi)n es una secuencia de to'ens
(n to'en puede ser un operando o bien un operador.
(n rbol de e(presi)n es un rbol binario con las siguientes propiedades1
7. .ada ,oja es un operando.
8. Los nodos raz y los nodos internos son operadores.
?. Los subrboles son sube=presiones cuyo nodo raz es un operador.
E$ORRI%O %E #N ARBOL
*ara visualizar o consultar los datos almacenados en un rbol se necesita recorrer el rbol o
(isitar los nodos del mismo. 'l contrario que las listas enlazadas& los rboles binarios no
tienen realmente un primer valor
El recorrido de un rbol supone visitar cada nodo slo una vez.
El recorrido de un rbol binario requiere que cada nodo del rbol sea procesado (visitado
una vez& y slo una& en una secuencia predeterminada. E=isten dos enfoques generales para
la secuencia de recorrido& profundidad y anc,ura.
En el recorrido en pro#undidad! el proceso e=ige un camino desde la raz a trav#s de un
,ijo& al descendiente ms lejano del primer ,ijo antes de proseguir a un segundo ,ijo. En otras
palabras& en el recorrido en profundidad& todos los descendientes de un ,ijo se procesan
antes del siguiente ,ijo.
En el recorrido en anchura! el proceso se realiza ,orizontalmente desde el raz a todos sus
,ijos% a continuacin& a los ,ijos de sus ,ijos y as sucesivamente ,asta que todos los nodos
,an sido procesados. En el recorrido en anc,ura& cada nivel se procesa totalmente antes de
que comience el siguiente nivel.
Recorri'o preorden
El recorrido preorden &*+,' conlleva los siguientes pasos& en los que el nodo raz va antes
que los subrboles1
7. <isitar el nodo raz &*'.
8. 3ecorrer el subrbol izquierdo &+' en preorden)
?. 3ecorrer el subrbol derec,o &,' en preorden)
Regla
En el recorrido preorden, el raz se procesa antes que los subrboles izquierdo y derec,o.
Recorri'o en orden
El recorrido en orden $inorder% procesa primero el subrbol izquierdo& despu#s el raz y& a
continuacin& el subrbol derec,o. El signi$cado de in es que la raz se procesa entre los
subrboles.
)i el rbol no est vaco& el m#todo implica los siguientes pasos1
7. 3ecorrer el subrbol izquierdo &+' en orden.
8. <isitar el nodo raz &*'.
?. 3ecorrer el subrbol derec,o &,' en orden.
Recorri'o postorden
El recorrido postorden &+,*' procesa el nodo raz (post despu#s de que los subrboles
izquierdo y derec,o se ,ayan procesado. .omienza situndose en la ,oja ms a la izquierda y
se procesa. ' continuacin& se procesa su subrbol derec,o. *or ltimo& se procesa el nodo
raz. Las etapas del algoritmo& si el rbol no est vaco& son1
7. 3ecorrer el subrbol izquierdo &+' en postorden)
8. 3ecorrer el subrbol derec,o &,' en postorden)
?. <isitar el nodo raz &*'.
Imlemen!aci&n
Los recorridos de un rbol binario se ,an de$nido recursivamente& los m#todos que lo
implementan es natural que tengan naturaleza recursiva. *rcticamente& todo consiste en
trasladar la de$nicin a codi$cacin. Los m#todos se declaran en la clase 'rbol+inario& y tienen
como argumento el nodo raz del subrbol que se recorre% el caso base, para detener la
recursin& es que el subrbol est# vaci (raiz @@ null
RBOL BINARIO %E B+S,#E%A
Los rboles estudiados ,asta a,ora no tienen un orden de$nido% sin embargo& los rboles
binarios ordenados tienen sentido. Estos rboles se denominan rboles binarios de bsqueda&
debido a que se puede buscar en ellos un t#rmino utilizando un algoritmo de bsqueda
binaria similar al empleado en arra*s)
(n rbol binario de bsqueda 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
derec,o son mayores que sus propios datos.
O)ERA$IONES EN RBOLES BINARIOS %E B+S,#E%A
Los rboles binarios de bsqueda& al igual que los rboles binarios& tienen naturaleza
recursiva y& en consecuencia& las operaciones sobre los rboles son recursivas& si bien
siempre se tiene la opcin de realizarlas de forma iterativa. Estas operaciones son1
/ Bsqueda de un nodo. 9evuelve la referencia al nodo del rbol o null.
/ Insercin de un nodo. .rea un nodo con su dato asociado y lo a"ade& en orden& al rbol.
/ Borrado de un nodo. +usca el nodo del rbol que contiene un dato y lo quita. El rbol debe
seguir siendo de bsqueda.
/ Recorrido de un rbol. Los mismos recorridos de un rbol binario preorden& inorden y
postorden.
B+sque'a
La bsqueda de un nodo comienza en el nodo raz y sigue estos pasos1
7. La clave buscada se compara con la clave del nodo raz.
8. )i las claves son iguales& la bsqueda se detiene.
?. )i la clave buscada es mayor que la clave raz& la bsqueda se reanuda en el subrbol
derec,o. )i la clave buscada es menor que la clave raz& la bsqueda se reanuda con el
subrbol izquierdo.
A recordar
En los rboles binarios ordenados& la bsqueda de una clave da lugar a un ca+ino de b,squeda,
de tal forma que baja por la rama izquierda si la clave buscada es menor que la clave de la raz o
baja por la rama derec,a si la clave es mayor.
Implementacin
La interfaz de la operacin es el m#todo buscar(con la referencia al dato (debe implementar a
.omparador que se busca. La bsqueda del nodo la realiza el m#todo localizar(& que recibe la
referencia a la raz del subrbol y el dato% el algoritmo de bsqueda es el siguiente1
7. )i el nodo raz contiene el dato buscado& la tarea es fcil1 el resultado es& simplemente& su
referencia y termina el algoritmo.
8. )i el rbol no est vaco& el subrbol espec$co por donde proseguir depende de que el dato
requerido sea menor o mayor que el dato del raz.
?. El algoritmo termina si el rbol est vaco& en cuyo caso devuelve null. El m#todo localizar(
se implementa recursivamente& autollamndose con la referencia al subrbol izquierdo o
derecho.
Inser!ar un no'o
*ara a"adir un nodo al rbol& se sigue el camino de bsqueda y& al $nal del camino& se enlaza
el nuevo nodo% por consiguiente& siempre se inserta como ,oja del rbol. El rbol que resulta
despu#s de insertar el nodo sigue siendo de bsqueda. En esencia& el algoritmo de insercin
se apoya en la bsqueda de un elemento& de modo que si se encuentra el elemento buscado&
no es necesario ,acer nada% en caso contrario& se inserta el nuevo elemento justo en el lugar
donde ,a acabado la bsqueda (es decir& en el lugar donde ,abra estado en el caso de
e=istir.
Implementacin
El m#todo insertar( es la interfaz de la operacin& llama al m#todo recursivo que realiza la
operacin y devuelve la raiz del nuevo rbol. ' este m#todo interno se le pasa la raz actual& a
partir de la cual describe el ca+ino de b,squeda, y& al $nal& se enlaza. En un rbol binario de
bsqueda no ,ay nodos duplicados% por ello& si se encuentra un nodo igual que el que se
desea insertar& se lanza un e=cepcin.
Eliminar un no'o
La operacin de eli+inaci-n de un nodo es tambi#n una e=tensin de la operacin de
bsqueda& si bien ms compleja que la insercin& debido a que el nodo a suprimir puede ser
cualquiera y la operacin debe mantener la estructura de rbol binario de bsqueda despu#s
de quitar el nodo.
Los pasos a seguir son1
7. +uscar en el rbol para encontrar la posicin del nodo a eliminar.
8. )i el nodo a suprimir tiene menos de dos ,ijos& reajustar los enlaces de su antecesor.
?. )i el nodo tiene dos ,ijos (rama izquierda y derec,a& es necesario subir a la posicin que
#ste ocupa el dato ms pr=imo de sus subrboles (el inmediatamente superior o el
inmediatamente inferior con el $n de mantener la estructura de rbol binario de bsqueda.
+pleentaci)n
El m#todo eliminar( es la interfaz de la operacin& se le pasa el elemento que se va a buscar
en el rbol para retirar su nodo% llama al m#todo sobrecargado& privado& eliminar( con la raz
del rbol y el elemento. Lo primero que ,ace el m#todo es buscar el nodo& siguiendo el
ca+ino de b,squeda. (na vez encontrado& se presentan dos casos claramente diferenciados.
El primero& si el nodo a eliminar es una ,oja o tiene un nico descendiente& resulta una tarea
fcil& ya que lo nico que ,ay que ,acer es asignar al enlace del nodo padre (segn el ca+ino
de b,squeda el descendiente del nodo a eliminar. El segundo caso& que el nodo tenga las dos
ramas no vaca& e=ige& para mantener la estructura de rbol de bsqueda& reemplazar el dato
del nodo por la +a*or de las cla(es +enores en el subrbol (otra posible alternativa es
reemplazar el dato del nodo por la +enor de las cla(es +a*ores. .omo las claves menores
estn en la rama izquierda& se baja al primer nodo de la rama izquierda y se contina bajando
por las ramas derec,a (claves mayores ,asta alcanzar el nodo ,oja. Aste es el mayor de los
menores& que reemplaza al del nodo a eliminar. El m#todo reemplazar(.
rboles 'e b+sque'a equilibra'os
E-I$IEN$IA %E LA B+S,#E%A EN #N RBOL OR% ENA%O
La e$ciencia de una bsqueda en un rbol binario ordenado vara entre :(n y :(log(n&
dependiendo de la estructura que presente el rbol. )i los elementos se a"aden en el rbol
mediante el algoritmo de insercin e=puesto en el captulo anterior& la estructura resultante
del rbol depender del orden en que sean a"adidos. 's& si todos los elementos se insertan
en orden creciente o decreciente& el rbol tendr todas la ramas izquierda o derec,a&
respectivamente& vacas. En este caso& la bsqueda en dic,o rbol ser totalmente
secuencial.
ARBOL BINARIO E,#ILIBRA%O. RBOLES A/L
(n rbol totalmente equilibrado se caracteriza porque la altura de la rama izquierda es igual
que la altura de la rama derec,a para cada uno de los nodos del rbol. Es un rbol ideal& pero
no siempre se puede conseguir que el rbol est# totalmente balanceado.
Defnicin
(n rbol equilibrado o rbol AV. es un rbol binario de bsqueda en el que las alturas de los
subrboles izquierdo y derec,o de cualquier nodo di$eren como m=imo en 7.
Al!ura 'e un "rbol equilibra'o. "rbol A/L
5o resulta fcil determinar la altura promedio de un rbol '<L& por ello se determina la altura
en el peor de los casos& es decir& la altura m=ima que puede tener un rbol equilibrado con
un nmero de nodos n. La altura es un parmetro importante ya que coincide con el nmero
de iteraciones que se realizan para bajar desde el nodo raz al nivel mas profundo de las
,ojas. La e$ciencia de los algoritmos de bsqueda& insercin y borrado depende de la altura
del rbol '<L.
INSER$I*N EN RBOLES %E B+S,#E%A E,#ILIBRA%OS0
ROTA$IONES
Los rboles equilibrados& rboles '<L& son rboles de bsqueda y& por consiguiente& para
a"adir un elemento se ,a de seguir el mismo algoritmo que en dic,os rboles de bsqueda.
)e compara la nueva clave con la clave del raz& contina por la rama izquierda o derec,a
segn sea menor o mayor (describe el ca+ino de b,squeda y termina insertndose como
nodo ,oja.
La estructura del nodo en un rbol equilibrado& es una e&tensi-n de la declarada para un
rbol binario. *ara determinar si el rbol est equilibrado debe manejarse informacin relativa
al balanceo o factor de equilibrio de cada nodo. *or esa razn& se a"ade al nodo un campo
ms1 el factor de equilibrio (fe. Este campo puede tomar los valores1 B7& C& D7.
-as operaciones bsicas de un rbol de bsqueda equilibrado son insertar y eliminar
un elemento% adems& se necesitan operaciones au=iliares para mantener los criterios de
equilibrio.
)roceso 'e inserci&n 'e un nue1o no'o
6nicialmente& se aplica el algoritmo de insercin en un rbol de bsqueda% este algoritmo
sigue el ca+ino de b,squeda ,asta llegar al fondo del rbol y se enlaza como nodo hoja y con
/actor de equilibrio C. *ero el proceso no puede terminar& es necesario recorrer el ca+ino de
b,squeda en sentido contrario& ,acia la raz& para actualizar el campo adicional /actor de
equilibrio. 9espu#s de una insercin& slo los nodos que se encuentran en el camino de
bsqueda pueden ,aber cambiado el factor de equilibrio.
;ay cuatro casos que se deben tener en cuenta al reestructurar un nodo '& segn dnde se
,aya ,ec,o la insercin1
7. 6nsercin en el subrbol izquierdo de la rama izquierda de '.
8. 6nsercin en el subrbol derec,o de la rama izquierda de '.
?. 6nsercin en el subrbol derec,o de la rama derec,a de '.
E. 6nsercin en el subrbol izquierdo de la rama derec,a de '.
Ro!aci&n simle
La rotacin simple resuelve la (iolaci-n del equilibrio de un nodo izquierda-izquierda,
sim#trica a la derecha-derecha .

You might also like