Está en la página 1de 11

En un rbol de bsqueda binaria es posible que con la

cantidad de inserciones y extracciones que se realizan sin


un orden predecible el rbol resultante tenga un nmero
mayor de nodos en la rama izquierda que en la rama
derecha o a la inversa, teniendo como consecuencia

tiempos de bsqueda muy altos.

Un rbol AVL es un rbol binario de bsqueda que cumple con


la condicin de que la diferencia entre las alturas de los
subrboles izquierdo y derecho de cada uno de sus nodos
difieren a lo mucho en 1. El mtodo que logra lo anterior, fue
descrito en 1962 por dos matemticos rusos G. M. Adelson-Vel Skii y

E. M. Landis; en su honor los rboles de bsqueda resultantes se


denominan Arboles AVL.

Se tiene el siguiente rbol :

El factor de balance para cada nodo es :


A = 2 -3 = -1
B=1-0=1
C=2-1=1
D=0-0=0
E=1 -0=1
F=0 -0=0
G=0 -0=0
Si el factor de balance de todos y cada uno de los nodos que pertenecen al rbol
esta el rango de -1. . 1, se puede decir que es un rbol AVL o balanceado.

class nodoAVL

{
int dato;
int fb; //factor de balance del nodo

nodoAVL izq, der;


}

Se definir como el ajuste de varios apuntadores con el objeto de


convertir un rbol no AVL aun rbol AVL.
El rbol que se muestra pierde sus propiedades de AVL dado que
tiene una altura mayor por su izquierda

Por lo que es necesario aplicarle una rotacin. Una rotacin exige el


ajuste de varios apuntadores con el propsito de :

El rbol siga siendo AVL.


Que el recorrido en inorden sea el mismo antes de la
rotacin y despus de ella.

Se aplica una simple rotacin a la derecha cuando el nodo


raz cuenta con una altura no permita por su izquierda.
q=p(izq);
p(izq)=q(der)
q(der)=p;

p=q;

Se aplica una simple rotacin a la izquierda cuando el nodo


raz cuenta con una altura no permita por su derecha.
q=p(der);

p(der)=q(izq)
q(izq)=p;
p=q;

Anteriormente pudimos restaurar la propiedad de


equilibrio cuando se presentaban desequilibrios "hacia la
izquierda" o "hacia la derecha" luego de realizar
inserciones en un rbol AVL. Sin embargo y como veremos,
pueden ocurrir "desequilibrios en forma de zig-zag", es
decir desequilibrios que no son ni a la derecha ni a la
izquierda como es el caso de los rboles

q=p(izq)
r=q(der)
q(der)=r(izq)
r(izq)=q
p(izq)=r(der)
r(der)=p
p=r

q=p(der)
r=q(izq)
q(izq)=r(der)
r(der)=q
p(der)=r(izq)
r(izq)=p
p=r