Transcript Arboles B

Árboles B
M.C. José Andrés Vázquez Flores
Estructuras de Datos / Primavera 2014
¿Qué es un árbol B?
 Es un árbol que almacena en cada nodo más de un elemento de
información.
 Se utiliza para almacenar grandes volúmenes de información en
memoria secundaria.
 Están completamente balanceados, a diferencia de los árboles
AVL pueden tener más de dos hijos y guardar más de un
elemento en un nodo (árboles multicamino).
 La altura del árbol no es muy grande a pesar de guardar
bastante información
 Propuesto en 1970 por Bayer y McCreight.
2
Definición de un árbol B
 Un árbol B de orden n:





Todas las hojas en el árbol están en el mismo nivel
Cada nodo contiene entre n y m=2n elementos (excepto la
raíz que contiene entre 1 y 2n).
El número de hijos por nodo será de 0,1,2,…, m+1.
Los elementos de un nodo están ordenados linealmente.
Los elementos del árbol están organizados siguiendo las
propiedades del ABB (menores a la izquierda, mayores a la
derecha).
3
Ejemplos de árboles B
Árbol de orden n=1, 2 niveles
Árbol de orden n=2, 3 niveles
6 | 9
2|4
7
25
10 | 15
10 | 20
30 | 40
m=2, por tanto máximo tiene m+1 hijos
2|5|7|8
22 | 24
13| 14 |15| 18
26 |27 | 28
41 |42 | 45
32| 35 | 38
m=4, por tanto máximo tiene m+1 hijos
4
Inserción de un nodo en un
árbol B
Busque el nodo hoja donde se debe insertar el nuevo elemento. Sobre este nodo
pueden ocurrir tres casos:
1.
El nodo no está lleno, es decir, tiene menos de 2n elementos
1.
2.
El nodo está lleno, es decir, tiene 2n elementos, por lo que no tiene capacidad de
guardar más (dado que se tienen 2n+1 elementos se hace una división):
1.
2.
3.
4.
3.
Se inserta el elemento y se termina el proceso de inserción.
Se crea un nuevo nodo que contenga los n elementos mayores.
Los n elementos menores se quedan en el nodo original
El valor medio pasa a ser el padre de los nodos anteriores
El proceso de inserción continua, se inserta el valor medio en el nodo correspondiente y se
verifica de nuevo en que caso está ubicado.
El nodo esta lleno y es la raíz del árbol, es decir, tiene 2n elementos, (dado que se
tienen 2n+1 elementos se hace una división)
1.
2.
3.
Se crea un nuevo nodo que contenga los n elementos mayores
Los n elementos menores se quedan en el nodo original
Se crea un nuevo nodo, que toma como único elemento el valor medio y este nodo se
convierte en la raíz del árbol
5
Ejemplo 1: inserción del 58
30 | 38 | 43
10 | 20 | 25
40 | 42
32 | 34
44 | 50 | 56
Árbol B de Orden 2, al insertar el valor 58 cae en el caso 1 puesto que el nodo no está lleno
30 | 38 | 43
10 | 20 | 25
32 | 34
40 | 42
44 | 50 | 56 | 58
Ejemplo 2: inserción del 60
30 | 38 | 43
10 | 20 | 25
40 | 42
32 | 34
44 | 50 | 56 | 58
Árbol B de Orden 2, al insertar el valor 60 cae en el caso 2 puesto que el nodo está lleno y ocurre el
desborde
30 | 38 | 43
10 | 20 | 25
32 | 34
40 | 42
44 | 50 | 56 | 58|60
Tiene 5 elementos y máximo son 2n=4
Ejemplo 2: inserción del 60 …
Se divide el nodo en 3 partes
30 | 38 | 43
10 | 20 | 25
40 | 42
32 | 34
44 | 50
56
58 | 60
El 56 se envia hacia el nodo padre y el nodo raíz tiene un nuevo hijo
30 | 38 | 43 | 56
10 | 20 | 25
32 | 34
40 | 42
44 | 50
58 | 60
Ejemplo 3: inserción del 52,54 y 46
30 | 38 | 43 | 56
10 | 20 | 25
32 | 34
40 | 42
44 | 50
58 | 60
Árbol B de Orden 2, al insertar el valor 52 cae en el caso 1 puesto que el nodo no está lleno
30 | 38 | 43 | 56
10 | 20 | 25
32 | 34
40 | 42
44 | 50 | 52
58 | 60
Ejemplo 3: inserción del 54 y 46
30 | 38 | 43 | 56
10 | 20 | 25
32 | 34
40 | 42
44 | 50 | 52
58 | 60
Árbol B de Orden 2, al insertar el valor 54 cae en el caso 1 puesto que el nodo no está lleno
30 | 38 | 43 | 56
10 | 20 | 25
32 | 34
40 | 42
44 | 50 | 52 | 54
58 | 60
Ejemplo 3: inserción del 46
Árbol B de Orden 2, al insertar el valor 46 cae en el caso 3 puesto que la raíz está llena y la hoja también
30 | 38 | 43 | 56
10 | 20 | 25
32 | 34
40 | 42
44 | 46 | 50 | 52 | 54
58 | 60
Tiene 5 elementos y máximo son 2n=4
Se divide el nodo en 3 partes
30 | 38 | 43 | 56
10 | 20 | 25
32 | 34
40 | 42
58 | 60
44 | 46
50
52 | 54
Ejemplo 3: inserción del 46 …
El 50 se envía hacia el nodo padre y el nodo raíz tiene un nuevo hijo, pero sólo puede tener 5 y tiene 6,
por lo que es necesario siempre verificar que no se exceda el número de hijos, en este caso en realidad
dado que el nodo raíz se ha desbordado los 6 hijos sólo son aparentes.
30 | 38 | 43 | 50 | 56
10 | 20 | 25
32 | 34
40 | 42
44 | 46
52 | 54
58 | 60
Sin embargo el nodo raíz ahora tiene más de 4 elementos por tanto estamos en el caso 3, así que
dividimos en 3 partes
50 | 56
43
30 | 38
10 | 20 | 25
32 | 34
40 | 42
44 | 46
52 | 54
58 | 60
Ejemplo 3: inserción del 46 …
Ahora dado que se crearon dos hijos a partir del nodo raíz, el árbol aumenta de nivel, el 43 queda como
nodo raíz
43
30 | 38
10 | 20 | 25
32 | 34
50 | 56
40 | 42
44 | 46
52 | 54
58 | 60
Ejercicio
 Sea un árbol B de orden 1:

Insertar consecutivamente los elementos
30,40,25,10,15,19,35,38,20,100