Anda di halaman 1dari 8

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 -- 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

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 -- 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.

Doble Rotación a la derecha

\ 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
-- -

--- A / G --- I --- L --- T


-- -- -- --

--- 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

Giro doble alrededor de “M”

/ 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

Giro hacia la izquierda:

-- J
-

-- E \ M
--

/ C / H --- S
\ K
-

/ U
/ B -- / G -- O
D -- I -- L
-- --
-- --
-- N -- R -- T
-- F
-- A -- -- --
--
--
-
-

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