Professional Documents
Culture Documents
Estructuras de Datos
Primavera 2016
Objetivo:
Conseguir que la altura del rbol sea mnima.
FCC-BUAP
Estrategias:
rboles binarios equilibrados:
114
rboles AVL
Primavera 2016
Es un rbol binario de bsqueda equilibrado.
FCC-BUAP
AVL: Adelson-Velskii & Landis (1962).
ABB + condiciones adicionales de equilibrio.
115
rboles AVL
Primavera 2016
Primera aproximacin.
Pero es una condicin demasiado restrictiva:
FCC-BUAP
Difcil insertar elementos y mantener la condicin.
Otra aproximacin menos "exigente":
116
rboles AVL
Primavera 2016
Inconveniente: Modificaciones (insertar/borrar).
Pueden destruir el equilibrio de algunos nodos.
FCC-BUAP
Dificultad para mantener la condicin de equilibrio.
8 16 8 16 8 16
4 10 14 4 10 14 4 10 14
2 6 2 6 2 6 13
1 117
Insercin
Primavera 2016
Nodos a los que afecta la insercin:
FCC-BUAP
Nodos el camino entre la raz y el punto de insercin.
El resto no se ven afectados.
118
Insercin
Primavera 2016
4 posibles situaciones que causan desequilibrio.
Desequilibrio causado por insercin en:
FCC-BUAP
...subrbol izquierdo del hijo izquierdo de A
...subrbol derecho del hijo izquierdo de A
119
Insercin
Primavera 2016
1.- 2.- 3.- 4.-
A A A A
FCC-BUAP
MC Beatriz Beltrn Martnez
Casos 1 y 4: Desequilibrio "por el exterior"
Rotacin simple.
Casos 2 y 3: Desequilibrio "por el interior"
Rotacin doble.
120
Rotacin simple
Primavera 2016
Se consiguen subrboles con la misma altura.
ABB, AVL con diferencia de alturas = 0.
FCC-BUAP
El nuevo rbol tiene la altura del original.
Se ha reequilibrado completamente el rbol.
NB NA
H H
121
Rotacin doble
Primavera 2016
Rotacin simple: No funciona en los casos 2 y 3.
Q es demasiado profundo.
FCC-BUAP
Q al menos tiene una raz.
...y dos subrboles, vacos o con elementos.
NA NB
NB NA
122
Q Q
Rotacin doble
Primavera 2016
Se "eleva" el nodo Q como nueva raz.
El rbol vuelve a tener la altura original.
FCC-BUAP
Como antes de insertar.
Se reequilibra el rbol por completo.
NB NB NB NA
Q 123
Rotacin doble
Primavera 2016
Rotacin doble: Son dos rotaciones simples.
Rotar Q y NB.
FCC-BUAP
Rotar Q y NA.
NB NB NA
Q
Q NB
124
Algoritmo
Primavera 2016
Los nodos tienen un Factor de Balance (FB) que est
entre 1 y 1.
FCC-BUAP
FB = 0 alturas de subrboles iguales.
FB =1 subrbol derecho ms grande que izquierdo.
125
Algoritmo
Primavera 2016
El mejor de los casos es que la insercin no realiza un
FCC-BUAP
desbalanceo, slo hay que actualizar los FB de todos los
ancestros.
126
Algoritmo
Primavera 2016
1. Inserte el nodo.
2. Busque el nodo pivote. Coloque los apuntadores P1,
P2, P3 y P4 donde:
FCC-BUAP
P1 = apuntador al nodo padre del nodo pivote.
P2 = apuntador al nodo pivote.
Primavera 2016
Si el nuevo nodo se insert en el subrbol ms
pequeo, modificar los FB desde el pivote hasta el
FCC-BUAP
nuevo.
Si no, verificar el tipo de rotacin.
128
Algoritmo
Primavera 2016
Rotacin Simple.
1. Si P1 no apunta a vaco
FCC-BUAP
Si la informacin del nuevo nodo es menor que la
informacin apuntada por P1.
Primavera 2016
2. Si la informacin del nuevo nodo es menor que la
informacin apuntada por P2
Hijo izquierdo de P2 = hijo derecho de P3
FCC-BUAP
Hijo derecho de P3 = P2
Modificar el FB desde el hijo izquierdo de P3
Primavera 2016
Rotacin doble
1. Si P1 no apunta a vaco
FCC-BUAP
Si la informacin del nuevo nodo es menor que la
informacin apuntada por P1.
Primavera 2016
2. Si la informacin del nuevo nodo es menor que la
informacin apuntada por P2
FCC-BUAP
Hijo derecho de P3 = hijo izquierdo de P4
Hijo izquierdo de P2 = hijo derecho de P4
Primavera 2016
3. Si la informacin del nuevo nodo es menor que la
informacin de P4:
FCC-BUAP
Modificar FB desde el hijo derecho de P3 hasta le
padre del nuevo nodo.
Primavera 2016
4. Si la informacin del nuevo nodo es mayor que la
informacin de P4:
Modificar FB desde el hijo izquierdo de P3 hasta le
FCC-BUAP
padre del nuevo nodo.
Modificar FB del nodo sealado por P2 (vale -1)
Primavera 2016
Insercin de un elemento en rbol AVL
FCC-BUAP
Se inserta en un subrbol
Si no cambia la altura: OK
135
Otros rboles equilibrados
Primavera 2016
Otros esquemas de rboles equilibrados:
Splay Trees
FCC-BUAP
Red-Black Trees
AA-Trees
B-Trees
136
rboles B
Estructuras de Datos
Primavera 2016
Optimizados para manejo de datos en disco
Objetivo:
FCC-BUAP
Minimizar el nmero de accesos a disco
rbol-B de orden N: rbol N-ario
138
Propiedades
Primavera 2016
Aunque hay muchas variantes:
Cada pgina contiene a lo sumo 2N elementos
FCC-BUAP
(llaves).
Cada pgina, excepto la de la raz, contiene N
139
rboles-B
Primavera 2016
Insercin:
Aadir el dato a su hoja. Reorganizar la hoja.
Si se llena la hoja:
FCC-BUAP
Dos hojas con L/2 elementos. Actualizar el
padre
Primavera 2016
rbol de orden 2 con 3 niveles.
FCC-BUAP
MC Beatriz Beltrn Martnez
25
10 20 30 40
2 5 7 8 13 14 15 18 22 24 26 27 28 32 35 38 41 42 45 46
141
Insercin
Primavera 2016
La insercin en un rbol B es relativamente sencilla.
FCC-BUAP
Si hay que insertar un elemento en una pgina con
M<2N elementos, el proceso de insercin queda
142
Insercin
Primavera 2016
20 30
FCC-BUAP
20
Insertar llave 22
20 30
Insertar llave 51
7 10 15 18 22 26 35 40 51 143
Insercin
Primavera 2016
Los rboles B:
FCC-BUAP
Crecen de las hojas hacia la raz.
Son recursivos.
Primavera 2016
La eliminacin de elementos en un rbol B es en
teora sencilla, pero se complica en sus detalles. Se
pueden distinguir dos circunstancias:
FCC-BUAP
1. El elemento que debe suprimirse se halla en una
pgina de hoja, entonces el algoritmos de
145
Eliminacin
Primavera 2016
25
FCC-BUAP
10 20 30 40
Eliminar la llave 25
24
10 20 30 40
5 7 8 13 15 18 21 22 26 27 32 35 38 42 45 46 146
Eliminacin
Primavera 2016
Eliminar la llave 45
24
FCC-BUAP
10 20 30 40
Eliminar la llave 24
10 20 30 40
5 7 8 13 15 18 21 22 26 27 32 35 38 42 46
147
Eliminacin
Primavera 2016
Eliminar las llaves 32 y 38
FCC-BUAP
10 20 30
10 20 30
5 7 13 15 18 22 26 27 35 40 42
148