Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase 08
Obertura
Árboles AVL
Epı́logo
¿Cómo están?
1 / 75
2 / 75
Repaso: Diccionarios
Definición
Un diccionario es una estructura de datos con las siguientes operaciones
3 / 75
Repaso: Árboles binarios de búsqueda
Definición
Un árbol binario de búsqueda (ABB) es una estructura de datos que
almacena pares (llave, valor) asociándolos mediante punteros según una
estrategia recursiva
1. Un ABB tiene una nodo que contiene una tupla (llave, valor)
2. El nodo puede tener hasta dos ABB’s asociados mediante punteros
● Hijo izquierdo
● Hijo derecho
y que además, satisface la propiedad ABB: las llaves menores que la llave
del nodo están en el sub-árbol izquierdo, y las llaves mayores, en el
sub-árbol derecho.
4 / 75
Repaso: Árboles binarios de búsqueda
Cada sub-árbol es un ABB: se cumple recursivamente la propiedad ABB
3 8
1 4 7 9
1 3 4 6 7 8 9
5 / 75
Repaso: Operaciones de un ABB
6 / 75
Repaso: Operaciones de un ABB
11
19
17 23
13
7 / 75
Repaso: Operaciones de un ABB
18 ≠ 7 7
11
19
17 23
13
8 / 75
Repaso: Operaciones de un ABB
18 ≠ 7 7
18 > 7
11
19
17 23
13
9 / 75
Repaso: Operaciones de un ABB
18 ≠ 7 7 18 > 7
18 ≠ 11 11
19
17 23
13
10 / 75
Repaso: Operaciones de un ABB
18 ≠ 7 7 18 > 7
18 ≠ 11 11
18 > 11
19
17 23
13
11 / 75
Repaso: Operaciones de un ABB
18 ≠ 7 7 18 > 7
18 ≠ 11 11 18 > 11
19 18 ≠ 19
17 23
13
12 / 75
Repaso: Operaciones de un ABB
18 ≠ 7 7 18 > 7
18 ≠ 11 11 18 > 11
19 18 ≠ 19
18 < 19
17 23
13
13 / 75
Repaso: Operaciones de un ABB
18 ≠ 7 7 18 > 7
18 ≠ 11 11 18 > 11
19 18 ≠ 19
18 < 19
18 ≠ 17 17 23
13
14 / 75
Repaso: Operaciones de un ABB
18 ≠ 7 7 18 > 7
18 ≠ 11 11 18 > 11
19 18 ≠ 19
18 < 19
18 ≠ 17 17 23
18 > 17
13
15 / 75
Repaso: Operaciones de un ABB
18 ≠ 7 7 18 > 7
18 ≠ 11 11 18 > 11
19 18 ≠ 19
18 < 19
18 ≠ 17 17 23
18 > 17
13 ∅
16 / 75
Repaso: Operaciones de un ABB
Supongamos que nos interesa encontrar la llave 18
18 ≠ 7 7 18 > 7
18 ≠ 11 11 18 > 11
19 18 ≠ 19
18 < 19
18 ≠ 17 17 23
18 > 17
13 ∅
¿Por qué no hicimos nuestra clásica tabla
de complejidades para las operaciones?
17 / 75
El problema del balance
3
6
4
3 8
6
7
1 4 7 9
8
18 / 75
Complejidad de las operaciones
19 / 75
Objetivos de la clase
20 / 75
Sumario
Obertura
Árboles AVL
Epı́logo
Hacia una definición de balance
21 / 75
Hacia una definición de balance
T1
22 / 75
Hacia una definición de balance
T1 T2
23 / 75
Hacia una definición de balance
T1
T2
24 / 75
Hacia una definición de balance
25 / 75
Árboles AVL
Definición
Un árbol binario de búsqueda está AVL-balanceado si
26 / 75
Árboles AVL: ejemplo
En el siguiente árbol hay una diferencia máxima de 1 entre hermanos
27 / 75
Árboles AVL: ejemplo
Ahora hay desbalance en los nodos T y K
28 / 75
Árboles AVL: caso general post-inserción
Supongamos que T1 , T2 y T3
son AVLs
Al insertar en T1 se produjo
desbalance para X
29 / 75
Árboles AVL: rotaciones
Realizamos un intercambio que llamaremos rotación
30 / 75
Árboles AVL: rotaciones
31 / 75
Árboles AVL: rotaciones
32 / 75
Árboles AVL: rotaciones
Antes de agregar B en el árbol AVL que vimos, los atributos de balance son
33 / 75
Árboles AVL: rotaciones
34 / 75
Árboles AVL: rotaciones
Luego de agregar B, los atributos de balance son
35 / 75
Árboles AVL: rotaciones
Efectuamos la rotación
36 / 75
Árboles AVL: rotaciones
Si en lugar de B agregamos G al original, obtenemos
37 / 75
Árboles AVL: rotaciones
38 / 75
Árboles AVL: rotaciones
Aplicando la misma rotación no logramos resolver el problema
39 / 75
Árboles AVL: rotaciones
40 / 75
Árboles AVL: rotaciones dobles
Primero rotamos a la izquierda en torno a Y-Z
41 / 75
Árboles AVL: rotaciones dobles
Luego rotamos a la derecha en X-Z (como antes)
42 / 75
Árboles AVL: rotaciones
43 / 75
Árboles AVL: rotaciones dobles
Volvamos al ejemplo de agregar G, agregando la definición de Z
44 / 75
Árboles AVL: rotaciones dobles
Aplicamos la rotación dobles y resolvemos el desbalance
45 / 75
Árboles AVL: rotaciones
46 / 75
Árboles AVL: práctica
Ejercicio
Construya un árbol AVL cuyas llaves se insertan en el siguiente orden:
M, D, H, B, A, C , S, K , I
47 / 75
Ejercicio: inserción y rotaciones
Insertamos la llave M
0
M
48 / 75
Ejercicio: inserción y rotaciones
Insertamos la llave D
−1
M
0
D
49 / 75
Ejercicio: inserción y rotaciones
−2
M
+1
D
0
H
50 / 75
Ejercicio: inserción y rotaciones
−2
M X
+1
D Y
0
H Z
51 / 75
Ejercicio: inserción y rotaciones
Resultado de la rotación
0
H
0 0
D M
52 / 75
Ejercicio: inserción y rotaciones
−1
H
−1 0
D M
0
B
53 / 75
Ejercicio: inserción y rotaciones
−2
H
−2 0
D M
−1
B
0
A
54 / 75
Ejercicio: inserción y rotaciones
−2
H
−2 0
D X M
−1
B Y
0
A
55 / 75
Ejercicio: inserción y rotaciones
Resultado de la rotación
−1
H
0 0
B M
0 0
A D
56 / 75
Ejercicio: inserción y rotaciones
−2
H
+1 0
B M
0 −1
A D
0
C
57 / 75
Ejercicio: inserción y rotaciones
−2
H X
+1 0
B Y M
0 −1
A D Z
0
C
58 / 75
Ejercicio: inserción y rotaciones
Resultado de la rotación
0
D
0 +1
B H
0 0 0
A C M
59 / 75
Ejercicio: inserción y rotaciones
+1
D
0 +2
B H
0 0 +1
A C M
0
S
60 / 75
Ejercicio: inserción y rotaciones
+1
D
0 +2
B H X
0 0 +1
A C M Y
0
S
61 / 75
Ejercicio: inserción y rotaciones
Resultado de la rotación
0
0 D 0
B M
0 0 0 0
A C H S
62 / 75
Ejercicio: inserción y rotaciones
+1
0 D −1
B M
0 0 +1 0
A C H S
0
K
63 / 75
Ejercicio: inserción y rotaciones
+2
0 D −2
B M
0 0 +2 0
A C H S
−1
K
0
I
64 / 75
Ejercicio: inserción y rotaciones
Identificamos nodos de la rotación (doble) y las direcciones
+2
0 D −2
B M
0 0 +2 0
A C H X S
−1
K Y
0
I Z
65 / 75
Ejercicio: inserción y rotaciones
Resultado de la rotación
+1
0 D −1
B M
0 0 0 0
A C I S
0 0
H K
66 / 75
Sumario
Obertura
Árboles AVL
Epı́logo
Complejidad de las rotaciones
67 / 75
Complejidad de las rotaciones
68 / 75
Altura de un árbol AVL
¿Y el mı́nimo?
69 / 75
Altura de un árbol AVL: caso máximo
En primer lugar, consideremos el número máximo en un árbol AVL
Esto ocurre cuando el árbol está lleno, es decir, para cada nivel del árbol
existe la máxima cantidad de nodos posible. Este caso claramente es un
árbol AVL
con lo cual
n ∈ Θ(2h ) ⇔ 2h ∈ Θ(n)
70 / 75
Altura de un árbol AVL: caso mı́nimo
Además, dado que el árbol principal tiene altura h, uno de los hijos
debe tener h − 1 y el otro h − 2
71 / 75
Altura de un árbol AVL
Esta recurrencia es similar a la recurrencia de Fibonacci
m(h) = F (h + 3) − 1
ϕh+3
m(h) = F (h + 3) − 1 ≈ √ − 1
5
y deducimos que
√
h + 3 ≈ logϕ ( 5(m(h) + 1))
72 / 75
Altura de un árbol AVL
Teorema
Todo árbol AVL con n nodos tiene altura h tal que
h ∈ O(log(n))
73 / 75
Sumario
Obertura
Árboles AVL
Epı́logo
Objetivos de la clase
74 / 75
Epı́logo
75 / 75