ULADECH -Matemática Discreta
Ing. Gallo Rodríguez Walter
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
---
4
8
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.
/
/
/
/
4
---
5
---
7
8
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
-
-
E
T
K
K
K
\
-
T E
T
\
--
--
-
-
E
-
V A -
P
-
K
\
E
A
--
P
--
/
E
T --
V
A
--
--
M
T
--
/
P
-
-
K
\
/
/
-
/
E
-
P
V
T
/
/
M
--
V
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
Hay cuatro tipos de rotaciones
Rotaciones Simples
Rotaciones Compuestas
El tipo de rotación a aplicar dependerá, según el factor de balance 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
R
R
\
--
X
--
X h
T3
T1 T2
T2 T3
h
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.
Doble Rotación a la derecha T
\
-/
X --
h
--
T1
--
T
X
W T4
T2
h h T2
W
T3
T4
T1
T3
h 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: I Inicial: /
\
/
/
----
\
E
----
C
B
D
\
A
/ ----
M
\
G
H
----
\
J
\
I
----
L
\
N
----
K
P
O
---
S
R
/
----
T
F
5
U
ULADECH -Matemática Discreta
Ing. Gallo Rodríguez Walter
Eliminar P:
/
/
---
---
C
\
B
A
P
\
E
\
/
M
D
\
H
/
G
---
\
J
\
---
K
---
I
\
N
---
O
S
R
---
L
U
/
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
/
/
---
---
C
B
\
A ---
F
O
\
E
\
D
\
H
/
G
---
\
J
\
I
\
N
---
K
---
S
R
/
---
L /
U
T
M
Girar a la izquierda
-------
N
O
---
R
S
/
U
---
T 6
ULADECH -Matemática Discreta
Ing. Gallo Rodríguez Walter
Giro doble alrededor de “M” /
\
/
---
E
---
C
B
/
\
A
M
D
\
H
/
G
---
-F -Giro a la Derecha
J
K
\
---
I
L
/
/
/
/
---
A
/
C
B
---
J
E
\
/
/
D
---
K
H
G
M
----
L
I
F
7
ULADECH -Matemática Discreta
Ing. Gallo Rodríguez Walter
Giro hacia la izquierda: --
---
/
---
A
/
C
B
---
J
\
E
/
/
D
---
H
G
F
---
K
\
---
M
I
---
---
L ---
N
O
---
R
S
/
U
---
T
EJERCICIOS ÁRBOLES AVL 1. Dada la secuencia de claves enteras 20, 10, 30, 5, 25, 12, 3, 35, 22, 11, 6, 2. Representa gráficamente el árbol AVL correspondiente e indica en qué momento se efectuó una rotación. 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.
4. Inserta las claves en el orden indicado a fin de incorporarlas a un árbol AVL. a) 10, 100, 20, 80, 40, 70 b) 5, 10, 20, 30, 40, 50, 60 c) 50, 100, 40, 5, 110, 20, 60, 65 d) 10, 100, 20, 90, 30, 80, 40, 70, 50, 60 e) 100, 90, 80, 70, 60, 50, 40, 30, 20, 10
8