Está en la página 1de 17

22/09/2019

UNIVERSIDAD NACIONAL DE LA PATAGONIA AUSTRAL


Unidad Académica Río Gallegos

Estructura de Datos

Tema 4:
Arbol AVL

Docente: Lic. Héctor Reinaga

Introducción
• ¿Qué son los arboles binarios de búsqueda?

• Son árboles binarios en los que se cumple que para cada


nodo, el valor de la clave de la raíz del subárbol izquierdo es
menor que el valor de la clave del nodo, y que el valor de la
clave raíz del subárbol derecho es mayor que el valor de la
clave del nodo.

• Los árboles binarios de búsqueda son una estructura de


datos que intenta conseguir mejor tiempo de acceso a los
datos en las operaciones de búsqueda/recuperación,
inserción o eliminación comparado con los tiempos en
estructuras lineales como arreglos y listas.

Arbol AVL Estructura de Datos 2

1
22/09/2019

ARBOLES AVL
Adelson-Velskii-Landis
(1962)
Es un árbol binario de búsqueda con una
condición de equilibrio.

Condición de equilibrio

Para todo nodo del árbol la altura de los sub-


arboles derecho e izquierdo puede diferir a lo
sumo en 1.
Si el árbol esta vacío su altura es 0.

Arbol AVL Estructura de Datos 3

Definición de árbol AVL

- Un árbol vacío es un árbol AVL


- Si T es un árbol no vacío y T i y T d sus subárboles, entonces T
es AVL si y solo si:
- T i es AVL
- T d es AVL
- H(Td) − H(Ti) < = [-1..1]

Arbol AVL Estructura de Datos 4

2
22/09/2019

Factor de equilibrio
Cada nodo, además de la información que se pretende
almacenar, debe tener los dos punteros a los árboles derecho e
izquierdo, igual que los árboles binarios de búsqueda (ABB), y
además el dato que controla el factor de equilibrio.

El factor de equilibrio es la diferencia entre las alturas del árbol


derecho y el izquierdo:

FE = altura subárbol derecho - altura subárbol izquierdo;

Por definición:
para un árbol AVL, este valor (FE) debe ser -1, 0 ó 1.

Arbol AVL Estructura de Datos 5

Si el factor de equilibrio de un nodo es:


0 -> el nodo está equilibrado y sus subárboles tienen
exactamente la misma altura.
1 -> el nodo está equilibrado y su subárbol izquierdo es un
nivel más alto.
-1 -> el nodo está equilibrado y su subárbol derecho es un
nivel más alto.

Si el factor de equilibrio Fe≥2 o Fe≤-2 es necesario


reequilibrar.

Arbol AVL Estructura de Datos 6

3
22/09/2019

No son AVL

Arbol AVL Estructura de Datos 7

SON AVL

Arbol AVL Estructura de Datos 8

4
22/09/2019

ARBOLES AVL
Mientras se mantenga la condición de equilibrio, el árbol
estará balanceado, lo que evitará que el árbol por el orden en
que se insertan o eliminan los elementos, se transforme o
tienda a ser una Lista Enlazada, sino más bien un árbol bajo
(petiso).

En un árbol AVL todas las operaciones de búsqueda tendrán


O(log n).

Arbol AVL Estructura de Datos 9

Inserción
- Insertar un nodo puede violar la propiedad de árbol AVL.
- Si este es el caso se debe restaurar el árbol para considerar
la operación de inserción finalizada.
- Esto se puede hacer siempre con una modificación al árbol,
conocida como “rotación”

Arbol AVL Estructura de Datos 10

5
22/09/2019

Tipos de Rotación
 Rotación simple izquierda
 Rotación simple derecha
 Rotación doble izquierda
 Rotación doble derecha

Arbol AVL Estructura de Datos 11

ROTACION SIMPLE IZQUIERDA

Arbol AVL Estructura de Datos 12

6
22/09/2019

ROTACION SIMPLE IZQUIERDA

Arbol AVL Estructura de Datos 13

ROTACION SIMPLE IZQUIERDA


K2 K1

K1 K2
Z X

X
Y Y Z

Arbol AVL Estructura de Datos 14

7
22/09/2019

ROTACION SIMPLE DERECHA

Arbol AVL Estructura de Datos 15

ROTACION SIMPLE DERECHA

Arbol AVL Estructura de Datos 16

8
22/09/2019

ROTACION SIMPLE DERECHA


K1 K2

K1
X K2 Z

Y
X
Y Z

Arbol AVL Estructura de Datos 17

ROTACIONES DOBLES

En algunos casos, las rotaciones simples no recomponen el árbol.


Por ejemplo:

Arbol AVL Estructura de Datos 18

9
22/09/2019

INSERTAR 14
4
4
2 6
2 6

1 3 5 7
1 3 5 7

15
15
ES ARBOL AVL
NO ES ARBOL
AVL
14
4

2 6

Se aplica la rotación
5 simple derecha,
1 3 15
pero el árbol sigue
desbalanceado.
7

NO ES ARBOL
14
AVL

Arbol AVL Estructura de Datos 19

ROTACION DOBLE DERECHA


4 4

2 6 2 6

1 3 5 7 1 3 5 14

15 7 15

NO ES ARBOL
AVL ES ARBOL AVL
14

Arbol AVL Estructura de Datos 20

10
22/09/2019

ROTACION DOBLE IZQUIERDA


15 15
15 Se aplica la rotación
simple izquierda,
10 20 5 20 pero el árbol sigue
10 20 desbalanceado.

5 10
5 NO ES ARBOL
ES ARBOL AVL NO ES ARBOL
AVL AVL
7
7
15
15
10 20
7 20

5
5 10

7
ES ARBOL AVL
NO ES ARBOL
AVL

Arbol AVL Estructura de Datos 21

ROTACION DOBLE DERECHA

K3 K2

K1 K3 K1
A

K2
D A B C D

B C

Arbol AVL Estructura de Datos 22

11
22/09/2019

ROTACION DOBLE IZQUIERDA

K3 K2

K1 K1 K3
D

K2
A B C D
A

B C

Arbol AVL Estructura de Datos 23

Inserción en un árbol AVL


 Antes de la inserción el arbol es AVL, luego de la inserción
debe seguir siendo árbol AVL

1.Se inserta el nodo nuevo donde corresponda (es un


árbol binario de búsqueda)
2.Desde el nodo insertado se sube en el árbol,
actualizando las alturas de los ancestros. Y evaluando
en cada caso la condición de equilibrio.
3.Se termina si se llega a la raíz sin haber encontrado
ningún nodo desequilibrado.
4.Si en algún nodo se ha roto la condición de equilibrio,
se aplica la rotación que corresponde y termina.

Arbol AVL Estructura de Datos 24

12
22/09/2019

Eliminación un árbol AVL


Antes de la eliminación el árbol es AVL, luego
de la eliminación debe seguir siendo árbol
AVL
1. Se suprime el nodo aplicando el caso que corresponda
(es un árbol binario de búsqueda).
2. Se regresa por el camino de búsqueda calculando las
nuevas alturas de los nodos visitados.
3. Si alguno de los nodos no cumple con la condición de
equilibrio se aplica la rotación que corresponda.
4. Se continúa hasta la raíz.

Arbol AVL Estructura de Datos 25

Ejemplos
ELIMINAR 42
55 55

39 110 39 110

21 42 21 69 190
69 190

11 26 11 26

NO ES ARBOL
ES ARBOL AVL AVL

55
Al volver por el camino
21 110 de búsqueda el nodo
visitado 39 está
desbalanceado, se
11 39 69 aplica rotación simple
190
izquierda. Continua
hasta llegar a la raiz.
26
ES ARBOL AVL

Arbol AVL Estructura de Datos 26

13
22/09/2019

65 ELIMINAR 25 65

43 70 43 70

25 58 67 75 58 67 75

62 66 69 73 86 62 66 69 73 86

NO ES ARBOL
ES ARBOL AVL 68 68
AVL

Rotación
doble 67 65
izquierda.

65 70 70
53

58 66 69 75 43 62 67 75

43 62 68 73 86 66 69
Rotación simple 73 86
izquierda. Continua
hasta llegar a la raiz.
ES ARBOL AVL 68

Arbol AVL Estructura de Datos 27

Posibles usos del árbol AVL


• Diccionario personalizado para un corrector
ortográfico
• Identificar el titular del teléfono desde el cual
se recibe una llamada.

Arbol AVL Estructura de Datos 28

14
22/09/2019

Uso: Identificar el titular del teléfono


desde el cual recibo una llamada.
• Supongamos que la lista de abonados contiene 800.000
abonados.
• ¿Es importante el tiempo en el que se accede a un dato que
se está buscando?
• En este caso de uso puede verse claramente la importancia
de obtener los datos en el menor tiempo posible.
• Esto no sería posible utilizando un árbol binario de
búsqueda, ya que en el peor de los casos, será necesario
recorrer los N abonados, es decir, los 800.000 abonados
para obtener la información.
• Si se utiliza un árbol AVL, será necesario recorrer a lo sumo
log2 (N), es decir, 20 abonados.

Arbol AVL Estructura de Datos 29

Uso: Diccionario personalizado para un


corrector ortográfico
• Supongamos que se desea implementar un corrector ortográfico
para escribir correctamente en español.
• Este diccionario debe contar con miles de palabras y además podrá
ser personalizado agregando las palabras que necesite el usuario.
• ¿Cómo conviene implementarlo? ¿Con un árbol binario de búsqueda
o con un AVL?
• En este ejemplo, se quiere agregar las palabras de la siguiente frase:
"Supongamos que queremos implementar un corrector ortográfico
para escribir correctamente en español", ordenadas como están.
• Que sucede en los diferentes casos?
– Si las palabras se ingresan en un orden casual, la forma del árbol quedará parcialmente
balanceado.
– Si las palabras se ingresan ordenadas alfabéticamente, la forma del árbol quedará
totalmente desbalanceado, se daría el peor de los casos en la formación del árbol.

Arbol AVL Estructura de Datos 30

15
22/09/2019

Ejemplo uso: se desea buscar la palabra “un”.


¿Cuántas comparaciones son necesarias?

En el peor de los casos, buscar el elemento


En el peor de los mas alejado de la raíz, lleva log2(N)
casos, buscar el comparaciones, es decir log2(12)=3.58
elemento mas siendo aproximadamente 4.
alejado, lleva N
comparaciones,
es decir 12.

Arbol AVL Estructura de Datos 31

Conclusiones
¿Qué problema resuelve el árbol AVL?
¿ En que caso conviene usarlo?
¿ si compara la eficiencia del mejor caso y peor caso, AVL vs
ABB, qué puede decir?

Arbol AVL Estructura de Datos 32

16
22/09/2019

Consultas…

Arbol AVL Estructura de Datos 33

Próximas clases
• Clases prácticas:
• Miércoles 25/9
• Viernes 27/9

• Parcial 1:
• Miércoles 2/10

• Clase de teoría:
• Grafos: Viernes 4/10

Arbol AVL Estructura de Datos 34

17

También podría gustarte