Está en la página 1de 21

rboles AVL

Aux. Mynor Marcos

rbol AVL
Un rbol totalmente equilibrado se caracteriza porque la atura de la rama
izquierda es igual que la altura de la rama derecha para cada uno de los nodos
del rbol. Es un rbol ideal, pero siempre se puede conseguir que el rbol est
balanceado.
La estructura de datos de rbol equilibrado que se utiliza es la del rbol ABL. El
nombre es en honor de Adelson-Velskii-Landis, que fueron los primeros
cientficos en estudiar las propiedades de esta estructura de datos. Son rboles
ordenados de bsqueda que, adems, cumplen la condicin de balanceo para
cada uno de sus nodos.
Un rbol AVL es un rbol binario de bsqueda en el que las alturas de los
subrboles izquierdo y derecho de cualquier nodo difieren como mximo en 1.

Arbol AVL
Un rbol AVL es un rbol binario balanceado.
La altura de un rbol binario perfectamente equilibrado de n nodos es log n
Las operaciones que se aplican a los rboles AVL no requieren ms del 44%
de tiempo (en el caso ms desfavorable) que si se aplican a un rbol
perfectamente equilibrado.

Insercin
El algoritmo es el siguiente:
Se compara la nueva clave con la clave raz, contina por la rama izquierda o
derecha segn sea menos o mayor.
Se inserta como un nodo hoja.
Debido a que la nueva hoja puede hacer que el rbol crezca en altura de una
rama, se ve afectado el factor de equilibrio del nodo raz de dicha rama. Esto
hace necesario que el algoritmo de insercin regrese por el camino de
bsqueda actualizando el factor de equilibrio de los nodos.

Entonces, se puede decir que una insercin puede destruir el criterio de


equilibrio de varios nodos del rbol. Se debe, entonces, recuperar la
condicin de equilibrio del rbol antes de dar por finalizada la operacin
para que el rbol siga siendo equilibrado.
Para saber si el rbol est equilibrado debe manejarse informacin relativa
al balanceo o factor de equilibrio de cada nodo. Por esta razn, se aade al
nodo un campo ms: el factor de equilibrio (fe). Este campo puede tomar
los valores: -1, 0 o +1.

Proceso de insercin
Si se aplica el proceso de insercin previamente dicho, an falta actualizar
los factores de equilibrio, pues estos se ven afectados cada vez que una hoja
es agregada.
La actualizacin del factor de equilibrio puede hacer que este mejore. Esto
ocurre cuando un nodo est descompensado a la izquierda y se inserta el
nuevo nodo en la rama izquierda, aumentando la altura en dicho lado y
haciendo que el factor de equilibrio se haga 0.

Balanceo
Cuando se actualiza el factor de equilibrio, si se inserta un valor en la rama
ms alta, entonces se rompe el criterio de equilibrio del rbol, pues la
diferencia de altura para a se 2, haciendo necesario reestructurarlo.
Hay cuatro casos que se deben tener en cuenta al reestructurar un nodo A,
segn dnde se haya hecho la insercin.
Insercin en el subrbol izquierdo de la rama izquierda de A.
Insercin en el subrbol derecho de la rama izquierda de A.

Insercin en el subrbol derecho de la rama derecha de A.


Insercin en el subrbol izquierdo de la rama derecha de A.

El primer y tercer caso (izquierda-izquierda, derecha-derecha) se resuelven


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

Rotacin simple
Tomando en cuenta el siguiente caso:

Se equilibra de la siguiente forma:

Movimiento de enlaces
Los cambios descritos en la rotacin simple afectan a dos nodos, el tercero
no se modifica, es necesario solo una rotacin. Para la rotacin simple a la
izquierda, rotacin II, los ajustes necesarios de los enlaces, suponiendo n la
referencia al nodo problema y n1 la referencia al nodo de su rama izquierda,
son:
n.iz = n1.de
n1.de = n
n = n1

Una vez realizada la rotacin, los factores de equilibrio de los nodos que
intervienen siempre son 0, los subrboles izquierdo y derecho tienen la
misma altura. Incluso la altura del subrbol implicado es la misma despus
de la insercin.

Si la rotacin es DD, los cambios en los enlaces del nodo n y del nodo de su
rama recha, n1, son:
n.de = n1.iz
n1.iz = n

n = n1

Realizada la rotacin, los factores de equilibrio de los nodos que intervienen


es 0. Se puede observar que estos ajustes son simtricos a los realizados en
la rotacin II.

Rotacin Doble
Ejemplificacin de la necesidad de otro tipo de rotacin

Ejemplo:

Al volver por el camino de bsqueda para actualizar los factores de


equilibrio, el nodo 75 pasa a tener fe = -1, el nodo 50 pasa a tener fe = +1 y
el nodo 80 tendr como fe = -2. En ese caso, se realiza rotacin doble.
La rotacin doble resuelve dos casos simtricos, se pueden denominar
rotacin DI y rotacin ID. En la rotacin doble hay que mover los enlaces de
tres nodos, el nodo padre, el descendiente y el descendiente del
descendiente por la rama contraria.

Movimiento de enlaces
Para rotacin ID, los movimientos son:
n1.de = n2. iz
n2.iz = n1
n.iz = n2.de

n2.de = n
n = n2

Los factores de equilibrio implicados en la rotacin ID dependen del factor


de equilibrio antes de la insercin, del nodo apuntado por n2, segn esta
tabla:
n2.fe = -1
n2.fe = 0
n2.fe = 1
n.fe = 0

n1.fe = 1

-1

n2.fe = 0

Los movimientos de los enlaces para realizar la rotacin DI son simtricos a


la rotacin ID:
n1. iz = n2.de
n2.de = n1

n.de = n2.iz
n2.iz = n
n = n2

Los factores de equilibrio, de igual forma, dependen del factor de equilibrio


de n2:
n2.fe = -1
n2.fe = 0
n2.fe = 1
n.fe = 0

-1

n1.fe = 1

n2.fe = 0

La complejidad del algoritmo de insercin de una clave en un rbol AVL es la


suma de la complejidad para bajar al nivel de las hojas (O(log n)) ms la
complejidad en el peor de los casos de la vuelta por el camino de bsqueda,
para actualizar el factor de equilibrio de los nodos que es (O(log n)), ms la
complejidad de los movimientos de los enlaces en la rotacin, que tienen
complejidad constante. En definitiva, la complejidad de la insercin es O(log
n), o complejidad logartmica.

Borrado
Se distinguen dos casos:
El nodo a borrar es un nodo hoja, o con un nico descendiente. Entonces,
simplemente se suprime, o bien se sustituye por su nodo descendiente.
El nodo a eliminar tiene dos subrboles. Se procede a buscar el nodo ms a la
derecha del subrbol izquierdo, es decir, el de mayor clave en el subrbol de
menores, ste se copia en el nodo a eliminar y, por ltimo, se retira el nodo
copiado.
Una vez eliminado el nodo, el algoritmo tiene que prever la actualizacin de los
factores de equilibrio de todos los nodos que han formado el camino de bsqueda,
ya que la altura de alguna de las dos ramas ha disminuido. Por consiguiente, se
regresa por los nodos del camino hacia la raz, calculando el factor de equilibrio.
De ser necesario, se hacen las rotaciones pertinentes para mantener el rbol
balanceado.

También podría gustarte