Sie sind auf Seite 1von 9

INSTITUTO TECNOLOGICO SUPERIOR DE PEROTE

BALANCEO DE ARBOLES BINARIOS


Ivn Emilio Andrade Aguilar
John Jairo Rivera Martin
11050065
INGENIERIA INFORMATICA SABATINO 3ER
SEMESTRE
PEROTE, VER. 2013
F
ARBOLES BALANCEADOS
La bsqueda ms eficiente se efecta en un rbol binario balanceado.
Desafortunadamente, la funcin Inserta no asegura que el rbol permanezca balanceado, el
grado de balance depende del orden del orden en que son insertados los nodos en el rbol.
La altura de un rbol binario es el nivel mximo de sus o!as "profundidad#. La
altura del rbol nulo se define como $%. &n rbol binario balanceado es un rbol binario en
el cual las alturas de los dos subrboles de todo nodo difiere a lo sumo en %. 'l balance de
un nodo en un rbol binario se define como la altura de su subrbol izquierdo menos la
altura de su subrbol dereco. (ada nodo en un rbol binario balanceado tiene balance
igual a %, )% o *, dependiendo de si la altura de su subrbol izquierdo es ma+or que, menor
que o igual a la altura de su subrbol dereco.
,upngase que tenemos un rbol binario balanceado, + usamos la funcin para
insertar un nodo en dico rbol. 'ntonces el rbol resultante puede o no permanecer
balanceado.
's fcil ver que el rbol se vuelve desbalanceado si + solo si el nodo reci-n
insertado es un descendiente izquierdo de un nodo que tenia de manera previa balance de %,
o si es un i!o dereco descendiente de un nodo que tenia de manera previa balance $%.
.ara que el rbol se mantenga balanceado es necesario realizar una transformacin
en el mismo de manera que/
%. 'l recorrido en orden del rbol transformado sea el mismo que para el rbol original "es
decir, que el rbol transformado siga siendo un rbol de bsqueda binaria#.
0. 'l rbol transformado est- balanceado.
1
2 (
F 3
Figura %
D
'
a# 4rbol original
(
2
1
1
'
(
2
b# 5otacin dereca
F 3
D '
c# 5otacin izquierda
'l rbol de la figura %b es una rotacin dereca del rbol con ra6z en 1 de manera
similar, el rbol de la figura %c se dice que es una rotacin izquierda del rbol con ra6z en
1.
&n algoritmo para implantar una rotacin izquierda de un subrbol con ra6z en p es
el siguiente/
q7 rigt"p#8
old7left"q#8
left"q#7p8
rigt"p#7old8
Llamemos a esta operacin leftrotation(p). Rightrotation(P), puede definirse de
manera similar. .or supuesto, en cualquier rotacin debe cambiarse el valor de la ra6z del
subrbol que est siendo rotado para que apunte a la nueva ra6z. "'n el caso de la rotacin
izquierda anterior, esta nueva ra6z es q#. 9bs-rvese que el orden de los nodos en un
recorrido en orden se preserva en ambas rotaciones/ izquierda + dereca. .or consiguiente,
se deduce que cualquier nmero de rotaciones "izquierda o dereca# pueden e!ecutarse en
un rbol desbalanceado para obtener uno balanceado, sin perturbar el orden de los nodos en
un recorrido en orden.
,upngase que se realiza una rotacin dereca en el subrbol con ra6z en 1 de la
figura 0 a. 'l rbol resultante se muestra en la figura : a. 9bs-rvese que el rbol de la
figura : a produce el mismo recorrido en orden que el de la figura 0 a + tambi-n est
balanceado. ;ambi-n, como la altura del subrbol de la figura 0 a era n<0 antes de la
insercin + la altura del subrbol de la figura : a es n<0 con el nodo insertado, el balance de
cada ancestro del nodo 1 no se altera. 1s6, reemplazando el subrbol de la figura 0= por su
rotacin dereca de la figura :=, garantizamos que se mantenga como rbol de bsqueda
binaria balanceado.
'n la figura 0b donde el nodo reci-n creado se inserta en el subrbol dereco del 2.
,ea ( el i!o dereco de 2. ">a+ tres casos/ ( puede ser el nodo reci-n insertado en cu+o
caso n7)%, o el nodo reci-n insertado puede estar en el subrbol dereco o izquierdo de (.
La figura 0b ilustra el caso en que est en el subrbol izquierdo8 el anlisis de los otros
casos es anlogo#. ,upngase que una rotacin izquierda del subrbol con ra6z en 2 precede
a una rotacin dereca del subrbol con ra6z en 1. La figura :b ilustra el rbol resultante.
'l siguiente algoritmo busca e inserta en un rbol binario balanceado que no est-
vac6o. (ada nodo del rbol contiene ? campos/ @ + r, que guardan la llave + el registro de
manera respectiva left + rigt son apuntadores a los subrboles izquierdo + dereco de
manera respectiva + bal, cu+os valores es %, )% o *, dependiendo del balance del nodo. 'n la
primera parte del algoritmo, si la llave deseada an no se encuentra en el rbol, se inserta
un nuevo nodo en el rbol de bsqueda binario, sin importar el balance. La primera fase
tambi-n toma en cuenta al ancestro ms !oven, +a que puede desbalancearse tras la
insercin. 'l algoritmo ace uso de la funcin ma@etree descrita con anterioridad + de las
rutinas rigtrotation + leftrotation, que aceptan un apuntador a la ra6z de un subrbol +
e!ecutan la rotacin deseada.
La altura mxima de un rbol de bsqueda binaria balanceado es %.AAlog0n, de
manera que una bsqueda en un rbol as6 nunca requiere ms de AAB de comparaciones
que las necesarias en un rbol balanceado de manera completa. 'n la prctica los rboles de
bsqueda binaria balanceados se comportan an me!or, produciendo tiempos de bsqueda
del orden de log0n <*.0? para valores grandes de n. 'n promedio se requiere una rotacin
en el AC.? B de las inserciones.
'l algoritmo para eliminar un nodo de un rbol de bsqueda binaria balanceado
conservando su balance l es an ms comple!o. Dientras que la insercin requiere a lo
sumo una rotacin doble, la eliminacin puede requerir una rotacin "doble o simple# en
cada nivel del rbol o 9"log n# rotaciones. ,in embargo, en la prctica, se a visto que solo
se requiere un promedio de *.0%A rotaciones "simples o dobles# por eliminacin.
Los rboles de bsqueda binaria balanceados que emos visto se llaman rboles de
altura bala!eada porque su altura se usa como criterio para el balanceo. &n m-todo, se
define "eso del rbol como el nmero de nodos externos en el mismo "que es igual al
nmero de apuntadores nulos#. ,i el cociente del peso del subrbol izquierdo de todo nodo
entre el peso del subrbol con ra6z en el nodo est entre alguna fraccin a + %)a, el rbol es
un rbol de "esos bala!eados de ra#$ a o se dice que est en la clase EbFaG. (uando
una insercin o eliminacin ordinaria en un rbol de clase EbFaG elimina al rbol de dica
clase, se usan rotaciones para restaurar la propiedad de pesos balanceados.
9tro tipo de rbol llamado por ;ar!an, un rbol binario balanceado requiere que para
todo nodo nd, la longitud del camino ms largo de nd a un nodo externo se a lo sumo dos
veces la longitud del camino ms corto de nd a un nodo externo "recu-rdese que los nodos
externos son nodos agregados al rbol en cada apuntador nulo#. De nuevo se usan
rotaciones para mantener el balance despu-s de una insercin o eliminacin. Los rboles
balanceados de ;ar!an tienen la propiedad de que, tras una eliminacin o insercin, puede
restaurarse el balance aplicando a lo sumo una rotacin doble + una simple, en contraste
con las posibles 9"log n# rotaciones tras la eliminacin en un rbol de altura balanceada.
Los rboles balanceados tambi-n pueden usarse para una implantacin eficiente de
colas de prioridad. La insercin de un nuevo elemento requiere a lo sumo 9"log n#, pasos
para encontrar la posicin adecuada + 9"%# pasos para accesar el elemento "siguiendo los
apuntadores izquierdos asta la o!a de la extrema izquierda# + 9"log n# o 9"%# pasos para
eliminar esta o!a. 1s6 al igual que una cola de prioridad implantada un eap, una cola de
prioridad implantada usando un rbol balanceado puede e!ecutar cualquier secuencia de n
inserciones + eliminaciones m6nimas en 9"nlog n# pasos.
1
%
2
4rbol ;:
de altura
*
n
4rbol
;% de
altura n
4rbol ;0
de altura
n
Figura 0
a#
Hodo
reci-n
insertado
1
%
2
4rbol
;% de
altura n
*
*
4rbol ;0
de altura
n)%
(
4rbol ;:
de altura
n)%
4rbol ;A
de altura
n
b#
Hodo
reci-n
insertado
2
*
4rbol ;%
de altura
n
1
*
a#
Hodo
reci-n
insertado
4rbol ;0
de altura
n
4rbol ;:
de altura
n
Figura :
(
*
b#
1
2
*
)%
4rbol ;%
de altura
n
4rbol ;0
de altura
n)%
4rbol ;:
de altura
n)%
4rbol
;A de
altura n
Hodo
reci-n
insertado
(9DI39 D' 'I'D.L9
JK busqueda e insercion en el arbol binario
PARTE 1
KJ
fp7H&LL8
p7tree8
f+a7H&LL8
+a7p8
/* a apunta al ancestro !as "o#en que puede
llegar a desbalancearse.fa se$ala al padre
de a, fp al padre de p
KJ
Eile"pL7H&LL#M
if"@e+77@"p##
return "p#8
q7"@e+N@"p# O left"p#/rigt"p#8
if"qL7H&LL#
if"bal"q#L7*#M
f+a7p8
+a7q8
P JJ fin del if
fp7p8
p7q8
P JJ fin del %hile
// inserta nue#o registro
q7ma@etree"rec,@e+#8
bal"q#7*8
"@e+N@"fp## O left"fp#7q/rigt"fp#7q8
/* el balance de todos los nodos entre node(a) node(q)
debera alterarse,!odificando su #alor de &
KJ
p7 "@e+ N @"+a## O left"+a# / rigt"+a#8
s7p8
Eile"pL7q#M
if"@e+N@"p##M
bal"p#7 %8
p7left"p#8
P
elseM
bal"p#7)%8
p=righ!p"#
P JJ fin del if
P JJ fin del %hile
JK
PARTE '
deter!inar si el arbol se encuentra desbalanceado o no. si
lo esta, q es el nodo recien insertado, a es su ancestro
desbalanceado !as "o#en, fa es el padre de a s es el hi"o
de a en la direcci(n del desbalance.
KJ
imbal7"@e+N@"+a## O %/)%8
if"bal"+a#77*#M
JK se le ha agregado otro ni#el al arbol.
El arbol per!anece balanceado.
KJ
"bal"+a##7imbal8
return"q#8
P JJ fin del if
if"bal"+a#L7imbal#M
/* el nodo agregado se ha colocado en la direccion opuesta
del desbalance. El arbol per!anece balanceado.
KJ
bal"+a#7*8
return "q#8
P JJ fin del if
JK
PARTE )
el nodo adicional a desbalanceado al arbol. restablecer
el balance efectuando la rotacion requerida, a"ustando
despues los #alores de balance de los nodos in#olucrados.
KJ
if"bal"s#77imbal#M
JJ a s se han desbalanceado en la !is!a direccion.
p7s8
if"imbal77%#
rigtrotation"+a#8
else
leftrotation"+a#8
bal"s#7*8
bal"s#7*8
P
elseM
/* a s se encuentran desbalanceados en direcciones
opuestas.
KJ
if"imbal77%#M
p7rigt"s#8
leftrotation"s#8
left"+a#7p8
rigtrotation"+a#8
P
elseM
p7left"s#8
rigt"+a#7p8
rigtrotation"s#8
leftrotation"+a#8
P JJ fin del if
JJ a"ustar el ca!po bal para los nodos in#olucrados
if"bal"p#77*#M
JJ p fue un nodo insertado
bal"+a#7*8
bal"s#7*8
P
else
if"bal"p#77imbal#M
bal"+a#7)imbal#M
bal"s#7*8
P
else
bal"+a#7*8
bal"s#7imbal8
P JJ fin de if
bal"p#7*8
P JJ fin de if
JJ a"ustar el epuntador del subarbol rotado
if"f+a77H&LL#
tree7p8
else
"+a77rigt"f+a## O rigt"f+a#7p/ left"f+a#7p8
return "q#8
P

Das könnte Ihnen auch gefallen