Vous êtes sur la page 1sur 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
búsqueda al que se le añade una condición
de equilibrio. Esta condición es que para
todo nodo la altura de sus subárboles
izquierdo y derecho pueden diferir a lo sumo
en 1.

.  Cada nodo tiene asignado un peso de acuerdo a las alturas de sus subárboles.  La inserción y eliminación en AVLs es la misma que en los ABBs.  Un nodo tiene un peso de: ◦ 1 si su subárbol derecho es más alto ◦ -1 si su subárbol izquierdo es más alto ◦ 0 si las alturas son las mismas. La condición de equilibrio debe mantenerse después de cada operación de inserción o eliminación.

.

El de la derecha viola la condición de equilibrio en el nodo 6. . ya que su subárbol izquierdo tiene altura 3 y su subárbol derecho tiene altura 1.-2 -1 6 6 1 0 -1 2 8 -1 4 1 7 0 1 2 0 0 0 0 3 8 4 1 0 0 3 7 Sólo el árbol de la izquierda es AVL.

+1 Si alguno de los pesos de los nodos se modifica en un valor no válido (2 o -2) debe seguirse un esquema de rotación. .(negativo)  izq mas alto (profundo)   Un árbol binario es un AVL si y sólo si cada uno de sus nodos tiene un equilibrio de –1.  + (positivo)  der mas alto (profundo)  . Equilibrio (n) = altura-der (n) – altura-izq (n) describe relatividad entre subárbol der y subárbol izq. 0.

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

 Insertar  Balancear ◦ ◦ ◦ ◦ Caso Caso Caso Caso 1 2 3 4 Rotación Rotación Rotación Rotación  Eliminar  Calcular Altura simple izquierda RSI simple derecha RSD doble izquierda RDI doble derecha RDD 8 .

es decir. siguiendo camino de búsqueda mediante comparación de claves. de los de un la . La inserción de elementos en este tipo árboles debe realizarse basándonos en algoritmos utilizados con los Árboles Búsqueda Binaria.

. Este hecho hace necesario que el algoritmo de inserción regrese por el camino de búsqueda actualizando el factor de equilibrio de los nodos. Se debe restaurar esa condición de equilibrio antes de dar por finalizada la operación. Una nueva inserción o eliminación de claves. puede destruir el criterio de equilibrio de los nodos del árbol.   Esta inserción de elementos puede hacer que aumente la altura de una rama de manera que cambie el factor de equilibrio de la raíz del subárbol.

.

en los cuales se rompa la condición de equilibrio y debamos realizar los pasos necesarios para restablecer tal equilibrio: 1. Inserción en el subárbol derecho de la rama derecha de un nodo A 2. Inserción en el subárbol izquierdo de la rama izquierda de un nodo A 3. Pueden existir cuatro casos durante la inserción de un nuevo elemento en el árbol. Inserción en el subárbol izquierdo de la rama derecha de un nodo A . Inserción en el subárbol derecho de la rama izquierda de un nodo A 4.

 El primer y tercer caso (izquierda-izquierda.  El segundo y cuarto caso (izquierda-derecha. . derechaderecha) se resuelven con una rotación simple. derechaizquierda) se resuelven con una rotación doble.

  La rotación simple implica a dos nodos. el nodo A. el nodo A con factor de equilibrio igual a 2 y el descendiente derecho o izquierdo según el caso. . el descendiente izquierdo y el descendiente derecho de este. En cambio en la rotación doble. o bien el caso simétrico. están implicados los tres nodos.

+1 0 0 .

Rotación simple Izquierda .

fmétodo .Derecha = Pivot.Izquierdo = Root. Root.Izquierdo. Pivot. retorna Pivot.Derecha.método rotacionSimpleIzquierda(Nodo Root) retorna Nodo Nodo Pivot = Root.

-1 0 0 .

Rotación simple derecha .

Derecho:=Root. Root. Derecho.método rotacionSimpleDerecha (Nodo Root) retorna Nodo Nodo Pivot = Root.Izquierdo = Pivot. Pivot. Izquierdo. retorna Pivot. fmétodo .

.

X X Doble rotación derecha-izquierda .

fmétodo . retorna rotacionSimpleIzquierda(X).Derecha).método rotacionDobleDerIzq (Nodo X) retorna Nodo X.Derecha = rotacionSimpleDerecha(X.

1 0 0 .

X X Doble rotación izquierda-derecha .

retorna rotacionSimpleDerecha(X).método rotacionDobleIzqDer (Nodo X) retorna Nodo X. fmétodo .Izquierda).Izquierda = rotacionSimpleIzquierda(X.

3. La segunda es la actualización del factor de equilibrio. actualizando el factor de equilibrio de los nodos. El algoritmo de eliminación puede descomponerse en tres partes diferenciadas: 1. Entonces hay que hacer rotaciones simples o dobles. Al eliminar un nodo en un árbol AVL puede afectar el equilibrio de sus nodos. La primera sigue la estrategia de la eliminación en árboles de búsqueda. 2. para lo que recorre el camino de búsqueda hacia la raíz. .