Вы находитесь на странице: 1из 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 n2.fe = 0 0 0 0 0 -1 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 n1.fe = 1 n2.fe = 0 0 0 0 -1 0 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.