ARBOLES AVL
Definición. Es un árbol binario de búsqueda binaria en el cual las alturas de los subarboles izquierdo y
derecho de la raíz a lo sumo en 1 y en el cual esos subarboles son, también aquí, arboles AVL .a cada
nodo de un árbol AVL se le asocia un factor de Balance
El cual es izquierdo alto, igual o derecho alto, respectivamente, según que el subárbol izquierdo tenga
una altura mayor, igual o menor que la del subárbol derecho
La denominación de árbol AVL viene dada por los creadores de tal estructura (Adelson-Velskii y Landis).
Recordamos que un árbol binario de búsqueda es un árbol binario en el cual cada nodo cumple con que
todos los nodos de su subárbol izquierdo son menores que la raíz y todos los nodos del subárbol
derecho son mayores que la raíz.
Recordamos también que el tiempo de las operaciones sobre un árbol binario de búsqueda son O(log n)
promedio, pero el peor caso es O(n), donde n es el número de elementos.
La propiedad de equilibrio que debe cumplir un árbol para ser AVL asegura que la profundidad del árbol
sea O(log(n)), por lo que las operaciones sobre estas estructuras no deberán recorrer mucho para hallar
el elemento deseado. Como se verá, el tiempo de ejecución de las operaciones sobre estos árboles es, a
lo sumo O(log(n)) en el peor caso, donde n es la cantidad de elementos del árbol. Sin embargo, y como
era de esperarse, esta misma propiedad de equilibrio de los árboles AVL implica una dificultad a la hora
de insertar o eliminar elementos: estas operaciones pueden no conservar dicha propiedad.
Árboles AVL
/ 7
-- 5 -- 8
-- --
-- 4 -- 6
- --
Figure 1. Árbol AVL de enteros
A modo de ejemplificar esta dificultad, supongamos que al árbol AVL de enteros de Figure 1 le queremos
agregar el entero 3. Si lo hacemos con el procedimiento normal de inserción de árboles binarios de
búsqueda el resultado sería el árbol de Figure 2 el cual ya no cumple con la condición de equilibrio de los
árboles AVL dado que la altura del subárbol izquierdo es 3 y la del subárbol derecho es 1.
/ 7
/ 5 --- 8
-
/ 4 --- 6
-
/ 3
Figure 2. Árbol que no cumple con la condición de equilibrio de los árboles AVL.
1
ULADECH -Matemática Discreta Ing. Gallo Rodríguez Walter
Inserción de un Nodo
Podemos insertar un nuevo nodo en un Árbol AVL utilizando el algoritmo usual de Árbol Binario,
comparando las llaves del nuevo código con la raíz e insertando el nuevo nodo en el subárbol izquierdo
o derecho según corresponda. A menudo resulta que puede insertarse el nuevo nodo sin cambiar la
altura del subárbol; de ser así ni la altura ni el balance del nuevo árbol se modificara. Aun cuando la
altura del subárbol aumentara, puede ser el subárbol más corto el que haya crecido, de manera que
cambiara el factor de Balance de la raíz. El único caso que puede ocasionar problemas es cuando se
inserta un nuevo nodo en el subárbol que es, en rigor, mas alto que el otro y cuando aumenta la altura
del árbol. Ello hara que un subarbol tenga una altura 2 veces mayor que el otro; en cambio la condición
de arboles AVL es que la diferencia de altura nunca sea mayor a 1.
K - K
- \ K
-
- - - T
- T E
- - -
- -
K
\ K \ K
-
T -
-- \ T - T
E E -
- - E / -
- V -
-- -
V P
- - -
A - P
-
- - -
K K
\ \
/ T E / -- T
E /
A -- P / / V
-- P / -- V
A
-- M --
-- M U
ROTACIONES DE ARBOLES
Ahora abordaremos el caso en que un nuevo nodo ha sido insertado en el sub árbol más alto
de la raíz y su altura ha aumentado ; en consecuencia , ahora un subárbol tiene una altura
mayor a 2 que el otro; y el árbol ya no satisface los requisitos de los subarboles AVL . Se
reconstruirá parte de el para recuperar el balanceo
2
ULADECH -Matemática Discreta Ing. Gallo Rodríguez Walter
Caso 1: Derecho alto: la acción necesaria en este caso recibe el nombre de Rotación Izquierda ; hemos
girado el nodo “X” hacia arriba a la raíz dejando caer el nodo “R” en el sub árbol izquierdo de “X”; el
subárbol T2 de nodos con llaves entre “R” y “X” Ahora se convierte en el subárbol derecho de “R” y no
en el subárbol izquierdo de “X”
Girar a la Izquierda -- X
\ R
R --
\
X
h T3
T1
T2 T2
h T3 T1
h+1
Altura Total=h+3
3
ULADECH -Matemática Discreta Ing. Gallo Rodríguez Walter
Caso 2: Izquierdo Alto : Cuando el factor de balance de X es izquierdo alto. Es preciso mover dos
niveles , hacia el nodo “W” que implanta el sub árbol izquierdo de “X” para encontrar la nueva raíz. Este
proceso se muestra en la siguiente figura y recibe el nombre de rotación doble , porque la
transformación se logra en dos pasos, primero girando el subárbol de raiz “X” hacia la derecha(de modo
que “W” se convierta en su raiz) y luego girando el subárbol de raíz “T” hacia la izquierda (moviendo W
hacia arriba para que se transforme en la nueva raiz).
En este segundo caso los factores de balance para T y X dependen del factor anterior de balance para
W.
\ T
-- W
/ X
T -- X
--
-- W
h T1
T4
T2 T3 T4
h
h T1
T2 T3
Altura Total=h+2
Altura Total=h+3
EJEMPLOS:
Rotación Simple :
4
ULADECH -Matemática Discreta Ing. Gallo Rodríguez Walter
Rotación Doble:
ELIMINACION DE UN NODO:
Para suprimir un nodo “x” en un árbol AVL se requieren las mismas ideas básicas de eliminación de
Arboles Binarios seguido de un Balanceo del Árbol (entre rotación simple y dobles)
Ejemplo:
Inicial:
/ M
\ E \ P
/ C --- J \ N \ S
--
/ B \ D \ H \ K --- O --- R / U
-- -
--- F
--
5
ULADECH -Matemática Discreta Ing. Gallo Rodríguez Walter
Eliminar P:
/ M
\ E \ P
/ C -- J \ N \ S
--
-
/ B \ D \ H \ K -- O -- R / U
-- --
-
-- A / G -- I -- L -- T
-- -- -- --
- - - -
-- F
--
Ajustar el balance :de las dos posibles alternativas “O” y “R” de reemplazar a “P” se escogió a
-
la de la rama izquierda “O”
/ M
\ E \ O
\ N \ S
/ C -- J
--
-
-- R / U
/ B \ D \ H \ K
--
-- T
-- A / G -- I -- L --
-- -- --
- -
- - / M
-- F
--
-
Girar a la izquierda --- S
-
/ U
-- O
--
-- N -- R -- T
-- -- --
6
ULADECH -Matemática Discreta Ing. Gallo Rodríguez Walter
/ M
\ E
/ C -- J
--
-
/ B \ D \ H \ K
-- A / G -- I -- L
-- -- --
- - -
-- F
--
-
Giro a la Derecha
/ M
/ J
/ E \ K
/ C / H
-- L
-
/ B -- D / G -- I
-- --
-- F
-- A
--
--
-
-
7
ULADECH -Matemática Discreta Ing. Gallo Rodríguez Walter
-- J
-
-- E \ M
--
/ C / H --- S
\ K
-
/ U
/ B -- / G -- O
D -- I -- L
-- --
-- --
-- N -- R -- T
-- F
-- A -- -- --
--
--
-
-
2. Dada la secuencia de claves enteras: 100, 29, 71, 82, 48, 39, 101, 22, 46, 17, 3,20, 25, 10.
Representa gráficamente el árbol AVL Correspondiente.
3. Determina cuáles de los siguientes árboles binarios de búsqueda son AVL. En el caso de que no
lo sean, encuentra todos los nodos que violen los requerimientos de AVL.