Está en la página 1de 50

rboles AVL

AVL son las iniciales de los hombres que idearon este tipo de rbol Adelson-Velskii y Landis en 1962. Bsicamente un rbol AVL es un rbol binario de bsqueda al que se le aade una condicin de equilibrio. Es decir, para todos los nodos la altura de sus subrboles izquierdo y derecho pueden diferir a lo sumo en 1.

Condiciones

Caractersticas
La diferencia entre las alturas de los subrboles derecho e izquierdo no debe excederse en ms de 1.

Cada nodo tiene asignado un peso de acuerdo a las alturas de sus subrboles
1 si su subrbol derecho es ms alto -1 si su subrbol izquierdo es ms alto 0 si las alturas son las mismas.

Ejemplo
-2 -1 6 1 0 -1 2 8 2 0 1 0 3 3

6 1
0

0 8

-1
1 0 4 7

4
0

Slo el rbol de la izquierda es AVL. El de la derecha viola la condicin de equilibrio en el nodo 6, ya que su subrbol izquierdo tiene altura 3 y su subrbol derecho tiene altura 1.

Factor de equilibrio
El factor de equilibrio (FE) es la diferencia entre las alturas del rbol derecho y el izquierdo. FE= altura subrbol derecho altura subrbol izquierdo
+ (positivo) der mas alto (profundo) - (negativo) izq mas alto (profundo)

Un rbol binario es un AVL si y slo si cada uno de sus nodos tiene un equilibrio de 1, 0, + 1 Si alguno de los pesos de los nodos se modifica en un valor no vlido (2 o -2) debe seguirse un esquema de rotacin.

Factor de equilibrio
La clave de conseguir un factor de balance que se mantenga entre los limites establecidos, se encuentra tanto en el proceso de insercin como de eliminacion. De fundamental importancia seran las rotaciones a derecha y a izquierda

Implementacin
Como cualquier rbol binario
Punteros a padre e hijos o slo a hijos Se aade a cada nodo un campo que indica su FE o la altura

Operaciones sobre un AVL


Insertar Eliminar

Balancear
Caso 1 Rotacin simple izquierda RSI Caso 2 Rotacin simple derecha RSD Caso 3 Rotacin doble izquierda RDI Caso 4 Rotacin doble derecha RDD

Insercin
Puede realizarse como en un rbol binario y despus retroceder hacia la raz rotando sobre cualquier nodo que se haya desequilibrado
Buscar hasta encontrar la posicin de insercin Se inserta el nodo nuevo con FE. Repasar el camino verificando el equilibrio de los nodos. Si el equilibrio de un nodo llega a ser + - 2, se vuelve a ajustar los subrboles de los nodos para que su equilibrio se mantenga acorde a +- 1

1. 2. 3.

Insercin del 3
1

-1

-1

-1

Borrado
Al eliminar un nodo en un rbol AVL puede afectar el equilibrio de sus nodos. Entonces hay que hacer rotaciones simples o dobles. Eliminas un nodo como lo hacemos en un rbol binario ordenado. Al localizar el nodo que queremos eliminar seguimos este procedimiento:
Si el nodo es un nodo hoja, simplemente lo eliminamos. Si el nodo solo tiene un hijo, lo sustituimos con su hijo. Si el nodo eliminado tiene dos hijos, lo sustituimos por el hijo derecho y colocamos el hijo izquierdo en el subrbol izquierdo del hijo derecho.

Borrado
Ahora que se ha eliminado el nodo, se debe volver a equilibrar el rbol:
Si el equilibrio del padre del nodo eliminado cambia de 0 a +-1 el algoritmo concluye.

Si el padre del nodo eliminado cambio de +-1 a 0, la altura del rbol ha cambiado y se afecte el equilibrio de su abuelo.
Si el equilibrio del padre del nodo eliminado cambia de +- 1 a +- 2 hay que hacer una rotacin. Despus de concluirla, el equilibrio del padre podra cambiar, lo que, a su vez, podra forzarnos a hacer otros cambios (y probables rotaciones) en toda la ruta hacia arriba a medida que ascendemos hacia la raz. Si encontramos en la ruta un nodo que cambie de 0 a +- 1 entonces finaliza.

Borrado

rboles AVL

Balancear
Tras efectuar una de estas operaciones pueden ocurrir diversos casos: 1. No se ha producido desbalanceo, es decir, a partir de todo nodo, la diferencia de alturas entre sus hijos es menor o igual que 1. En este caso no se hace nada. 2. Existe algun nodo que se ha desbalanceado. Una regla importante es actuar sobre el primer nodo que incumpla el factor de balance 1, empezando desde abajo hacia arriba, o sea, desde las hojas hacia la raiz.

Balanceo

Balancear
Debe cumplir:
x < y Los nodos de A < x y y Los nodos de B > x pero < y Los nodos de C > y y x.

Balancear, rotacin simple izquierda RSI


Se trata de ajustar la profundidad de dos ramas para hacer el rbol ms equilibrado, manteniendo la relacin de orden
8 5 3 -1 -2

0 8 0

-2

Balancear, rotacin simple izquierda RSI


Ejemplo 2
8 5 3 2 0 -1 -1 7 -2 9 0 5 0 8 7 0 0

0
2

3 0

-1

Balancear, rotacin simple izquierda RSI


Ejemplo 3

Balancear, rotacin simple derecha RSD


Ejemplo 1
2 0 7 0

8
1 15

15 8 17 0 7 0

0
1 7 0 0 20 0

0 9

20

Balancear, rotacin simple derecha RSD


Ejemplo 2

Balancear, rotacin simple derecha RSD


Hay varios puntos que cabe sealar aqu:

Se conserva el orden apropiado del rbol. Restablece todos los nodo a equilibrios apropiados AVL Conserva el recorrido en orden que el rbol anterior.

Balancear, rotacin simple

Rotacin
Construir los rboles: 8, 15, 7, 9, 17, 20 y 8, 5, 9, 7, 3, 2 Realizar la rotacin correspondiente

Rotacin
Construir el rbol: 8, 15, 7, 9, 17, 20

Rotacin
Construir el rbol: 8, 5, 9, 7, 3, 2

Rotacin doble
Pueden ocurrir "desequilibrios en zig-zag", es decir desequilibrios que no son ni a la derecha ni a la izquierda. Constara de dos rotaciones simples

Balancear, rotacin doble izquierda RDI


Inicia del ms distal al ms proximal a la raz Ejemplo 1

8 5 0 1 7

-2

8 7 5 0 -1

-2

0 8 0

Balancear, rotacin doble izquierda RDI


Ejemplo 2
8 6
5 -1 0 -1 7 -2

8 5 1 6

-2 9 1 7 0

6
9 0 3 0 7 0 5 -1

0 8 0 0 9 0

Balancear, rotacin doble izquierda RDI


Ejemplo 3

Balancear, rotacin doble izquierda RDI


Ejemplo 3

Balancear, rotacin doble derecha RDD


Si esta desequilibrado a la derecha y su hijo izquierdo tiene distinto signo () hacemos rotacin doble derecha-izquierda. Ejemplo 1
-2
7 0 5 1 7 0 8

-2

8 -1 5

7 5
0

0 8 0

Balancear, rotacin doble derecha RDD


Ejemplo 2

2 0 4 -1 0 6

5 -1 7 8 0 0

2 4 0

5
1 6

7 -1 8 6 0 9

7
1 0 8 0 4

0 5

rboles AVL
Crear el rbol con los valores: 50, 23, 65, 70, 82, 68, 39

Realizar la rotacin correspondiente


-2 1 1
23 50

65
50 0 68
23

-1 2
65

70
82

0
0
85

39

1 0
70

0
50

0 39 0

-1
82

68

0 8 5
23

39

2 0

65 70 68 82

Desventajas
Necesidad de espacio adicional para el area de indices. Desaprovechamiento de espacio que resulta al quedar huecos intermedios libres despues de sucesivas actualizaciones. Tiene tendencia a que aumente el tiempo medio de acceso a los registros, cuando se producen muchas altas nuevas con claves que hay que intercalar entre las existentes, por el ordenamiento. Aumenta el tiempo de acceso a los registros

Ejercicios
1. Construir el rbol AVL de la siguiente secuencia de claves 10, 75, 34, 22, 64, 53, 41, 5, 25, 74, 20, 15, 90.

Ejercicios
1. Construir el rbol AVL de la siguiente secuencia de claves 10, 75, 34, 22, 64, 53, 41, 5, 25, 74, 20, 15, 90.

Ejercicios
1. Del siguiente rbol AVL, eliminar las siguientes claves Con Sucesor 34 y 64. Con predecesor 20, 15

Ejercicios
1. Del siguiente rbol AVL, eliminar las siguientes claves Con Sucesor 34 y 64.

Ejercicios
1. Del siguiente rbol AVL, eliminar las siguientes claves Con predecesor 20, 15

Ejercicios
Construir el rbol AVL de las siguientes secuencias de claves

1. 40,20,10,30,25,5,15,23,58,60,52,54,46. 2. 86,25,63,77,54,19,14,49,67,18

Ejercicios
Construir el rbol AVL de las siguientes secuencias de claves 1. 40,20,10,30,25,5,15,23,58,60,52,54,46. Insertar 40,20,10 30,25

Ejercicios
Construir el rbol AVL de las siguientes secuencias de claves 1. 40,20,10,30,25,5,15,23,58,60,52,54,46. Insertar 5,15,23,58,60

Ejercicios
Construir el rbol AVL de las siguientes secuencias de claves 1. 40,20,10,30,25,5,15,23,58,60,52,54,46. Insertar 52

Ejercicios
Construir el rbol AVL de las siguientes secuencias de claves 1. 40,20,10,30,25,5,15,23,58,60,52,54,46. Insertar 54

54

Ejercicios
Construir el rbol AVL de las siguientes secuencias de claves 1. 40,20,10,30,25,5,15,23,58,60,52,54,46. Insertar 46

54

Ejercicios
Construir el rbol AVL de las siguientes secuencias de claves 2. 86,25,63,77,54,19,14,49,67,18 Insertar 86, 25, 63

Ejercicios
Construir el rbol AVL de las siguientes secuencias de claves 2. 86,25,63,77,54,19,14,49,67,18 Insertar 77,54,19,14,49,67

Ejercicios
Construir el rbol AVL de las siguientes secuencias de claves 2. 86,25,63,77,54,19,14,49,67,18 Insertar 18

También podría gustarte