Sei sulla pagina 1di 28

El nombre AVL son las iniciales de los

hombres que idearon este tipo de rbol


Adelson-Velskii y Landis en 1962.

Un rbol AVL es un rbol binario de


bsqueda al que se le aade una condicin
de equilibrio. Esta condicin es que para
todo nodo la altura de sus subrboles
izquierdo y derecho pueden diferir a lo sumo
en 1.

La condicin de equilibrio debe mantenerse despus de


cada operacin de insercin o eliminacin.

Cada nodo tiene asignado un peso de acuerdo a las


alturas de sus subrboles.

Un nodo tiene un peso de:


1 si su subrbol derecho es ms alto
-1 si su subrbol izquierdo es ms alto
0 si las alturas son las mismas.

La insercin y eliminacin en AVLs es la misma que en los


ABBs.

-2
-1

1
0

-1

-1
4

1
2

0
3

0
3

Slo el rbol de la izquierda es AVL.


El de la derecha viola la condicin de equilibrio en el nodo 6, ya
que su subrbol izquierdo tiene altura 3 y su subrbol derecho
tiene altura 1.

Equilibrio (n) = altura-der (n) altura-izq (n)

describe relatividad entre subrbol der y subrbol


izq.
+ (positivo) der mas alto (profundo)
- (negativo) izq mas alto (profundo)

Un rbol binario es un AVL si y slo si cada


uno de sus nodos tiene un equilibrio de 1, 0,
+1
Si alguno de los pesos de los nodos se
modifica en un valor no vlido (2 o -2) debe
seguirse un esquema de rotacin.

class Nodo {
//para almacenar el valor del equilibrio del nodo
int bal;
int dato;
Nodo izq;
Nodo der;
}

Insertar

Balancear

Caso
Caso
Caso
Caso

1
2
3
4

Rotacin
Rotacin
Rotacin
Rotacin

Eliminar

Calcular Altura

simple izquierda RSI


simple derecha RSD
doble izquierda RDI
doble derecha RDD

La insercin de elementos en este tipo


rboles debe realizarse basndonos en
algoritmos utilizados con los rboles
Bsqueda Binaria, es decir, siguiendo
camino
de
bsqueda
mediante
comparacin de claves.

de
los
de
un
la

Esta insercin de elementos puede hacer que


aumente la altura de una rama de manera que cambie
el factor de equilibrio de la raz del subrbol.
Este hecho hace necesario que el algoritmo de
insercin regrese por el camino de bsqueda
actualizando el factor de equilibrio de los nodos.
Una nueva insercin o eliminacin de claves, puede
destruir el criterio de equilibrio de los nodos del
rbol. Se debe restaurar esa condicin de equilibrio
antes de dar por finalizada la operacin.

Pueden existir cuatro casos durante la insercin de un


nuevo elemento en el rbol, en los cuales se rompa la
condicin de equilibrio y debamos realizar los pasos
necesarios para restablecer tal equilibrio:
1. Insercin en el subrbol derecho de la rama derecha de un
nodo A
2. Insercin en el subrbol izquierdo de la rama izquierda de un
nodo A
3. Insercin en el subrbol derecho de la rama izquierda de un
nodo A
4. Insercin en el subrbol izquierdo de la rama derecha de un
nodo A

El primer y tercer caso (izquierda-izquierda, derechaderecha) se resuelven con una rotacin simple.

El segundo y cuarto caso (izquierda-derecha, derechaizquierda) se resuelven con una rotacin doble.

La rotacin simple implica a dos nodos, el


nodo A con factor de equilibrio igual a 2 y el
descendiente derecho o izquierdo segn el
caso.
En cambio en la rotacin doble, estn
implicados los tres nodos, el nodo A, el
descendiente izquierdo y el descendiente
derecho de este; o bien el caso simtrico.

+1
0

Rotacin simple Izquierda

mtodo rotacionSimpleIzquierda(Nodo Root) retorna Nodo


Nodo Pivot = Root.Derecha;
Root.Derecha = Pivot.Izquierdo;
Pivot.Izquierdo = Root;
retorna Pivot;
fmtodo

-1

Rotacin simple derecha

mtodo rotacionSimpleDerecha (Nodo Root) retorna Nodo


Nodo Pivot = Root. Izquierdo;
Root.Izquierdo = Pivot. Derecho;
Pivot.Derecho:=Root;
retorna Pivot;
fmtodo

Doble rotacin derecha-izquierda

mtodo rotacionDobleDerIzq (Nodo X) retorna Nodo


X.Derecha = rotacionSimpleDerecha(X.Derecha);
retorna rotacionSimpleIzquierda(X);
fmtodo

Doble rotacin izquierda-derecha

mtodo rotacionDobleIzqDer (Nodo X) retorna Nodo


X.Izquierda = rotacionSimpleIzquierda(X.Izquierda);
retorna rotacionSimpleDerecha(X);
fmtodo

El algoritmo de eliminacin puede descomponerse en


tres partes diferenciadas:
1.

La primera sigue la estrategia de la eliminacin en rboles de


bsqueda.

2.

La segunda es la actualizacin del factor de equilibrio, para lo


que recorre el camino de bsqueda hacia la raz, actualizando
el factor de equilibrio de los nodos.

3.

Al eliminar un nodo en un rbol AVL puede afectar el


equilibrio de sus nodos. Entonces hay que hacer rotaciones
simples o dobles.

Potrebbero piacerti anche