You are on page 1of 18

rbol B

Estructura de Datos en memoria secundaria


Ing. Armandina Leal Flores

Introduccin
Para almacenar muchos datos disco, es necesario una estructura de datos eficiente. Los accesos al disco son costosos en tiempo por lo que se debe evitar realizar muchos accesos a los datos. AVL es la mejor estructura para memoria principal, pero es ineficiente si se utiliza para almacenamiento secundario. Esto se debe a la cantidad de accesos necesarios para efectuar las rotaciones. Otro problema es que se requieren tantos accesos como niveles se recorran en el rbol para efectuar la bsqueda.

rboles B
Bayer y McCreight propusieron en 1970 esta estructura. Manejan rboles de bsqueda multicamino, cuyos nodos guardan ms de un elemento. Son rboles 100% balanceados en su estructura, lo cual repercute en bsquedas eficientes y en accesos mnimos a disco. 10 20
5 8 12 18 25 65 92 99

Caractersticas del rbol B


Un rbol B de orden n es aquel que:
Todas las hojas del rbol estn en el nivel inferior. Cada nodo contiene entre n y 2n elementos, excepto el nodo raz, que puede tener entre 1 y 2n elementos.

Si un nodo tiene m elementos, el nodo siempre contendr m + 1 hijos si no es un nodo hoja.

Ejemplo....
Para un rbol B de orden 3:
Cuntos elementos mximo puede guardar cada nodo del rbol? 6 Cuntos elementos mnimo puede guardar cada nodo del rbol? 1 si el la raz, 3 cualquier otro nodo. Cuntos hijos mximo puede tener un nodo? 7 Cuntos hijos mnimo puede tener un nodo? 0 si es hoja, 2 si es raz, 4 cualquier otro nodo.

Ms caractersticas del rbol B


Un rbol B de orden n es aqul en que:
Los elementos de un nodo estn ordenados linealmente. Los elementos estn organizados de tal forma que se cumple la regla de la bsqueda: a la izquierda menores, a la derecha mayores. 10 20 5 8 25 65 92 99

12 18

Ejemplo...
De qu orden es este rbol B?
10 20 5 8 12 18
Este rbol es de orden 2 ya que puede almacenar hasta 4 elementos en cada nodo.

25 65 92 99

Proceso de Insercin
Buscar el nodo hoja en donde se debera agregar el elemento. Si hay espacio disponible en el nodo, agregar el elemento y terminar. Si el nodo hoja NO tiene capacidad de almacenar el elemento, se deber crear un nuevo nodo al mismo nivel de la hoja y distribuir a los 2n+1 elementos de la siguiente forma:
El nuevo nodo recibe a los n elementos ms grandes. El nodo existente se queda con los n elementos ms pequeos. El elemento medio se insertar en el nodo padre siguiendo la misma lgica de insercin. En caso de no haber nodo padre, se crear un nuevo nodo que pasar a ser la nueva raz.

Ejemplo....
10 20 5 8 25 65 92 99

12 18
Agregar el 4

10 20
Si hay espacio para el elemento, ste se agrega en el nodo. Los elementos estn acomodados de menor a mayor.

4 5 8 12 18

25 65 92 99

Ejemplo...
10 20 5 8 25 65 92 99

12 18
Agregar el 56
Cuando el nuevo elemento no cabe en el nodo, se agrega otro nodo y se reparten los elementos.

10 20 65
4 5 8 92 99

12 18

25 56

Ejemplo...
10 20 65 4 5 8

70 75 80 85 25 56
Agregar el 78

12 18

El rbol siempre se resiste a crecer, ya que trata de distribuir los elementos en los nodos ya existentes.

10 20 70 4 5 8 12 18 75 78 80 85 25 56 65

1020 6590 4 5 8
1218

Ejemplo
Agregar el 66
El rbol crece de abajo hacia arriba. Cuando el rbol aumenta de altura slo se agrega una nueva raz.

9495 7075 8085

2556 5760
10 20 65 90 75 9495

1
4 5 8
12 18

2
65 10 20 4 5 8 12 18 25 56 57 60

80 85

75 90
9495 80 85 66 70

25 56 57 60 66 70

Proceso de Eliminacin
Buscar el elemento a borrar. Si el elemento a borrar est en una nodo hoja, se borra y termina el proceso. Si el elemento a borrar no se encuentra en una hoja, al igual que en un ABB, se buscar al sustituto ms apropiado. El sustituto ser:
El ltimo elemento de la hoja ms derecha del subrbol izquierdo del nodo actual (el mayor de los menores). El primer elemento de la hoja ms izquierda del subrbol derecho del nodo actual (el menor de los mayores).

Ejemplo...
10 20 65 4 5 8 12 18 25 56

70 75 80 85
Eliminar el 8

Cuando el nodo tiene ms elementos que el mnimo, se da de baja al elemento y termina el proceso.

10 20 65 4 5 12 18

70 75 80 85 25 56

Ejemplo...
10 20 65 4 5 8 12 18
Cuando el nodo tiene el mnimo se toma un elemento de los hermanos.

70 75 80 85 25 56 Eliminar el 56

10 20 70 4 5 8 75 80 85

12 18

25 65

Ejemplo...
10 20 65 4 5 8 12 18 25 56 70 75 Eliminar el 56 10 20 4 5 8 12 18 25 65 70 75

Cuando el nodo tiene el mnimo y los hermanos tambin, se une el nodo con uno de sus hermanos y le libera el nodo sobrante.

65
10 20 4 5 8 12 18 25 56 57 60 75 90

Ejemplo...
93 95
80 85 Eliminar el 65
Utilizar el menor de los mayores

66 70 66

1
10 20 4 5 8

2
90 93 95 4 5 8 12 18 10 20 66 90 93 95 70 75 80 85

12 18
25 56 57 60

70 75 80 85

25 56 57 60

65 10 20 60 4 5 8 12 18 61 62 75 90 93 95

Ejemplo...
Eliminar el 65
Utilizar el menor de los mayores

80 85
66 70

25 56 57 58

1
10 20 60

66 90 93 95 70 75 80 85 61 62

2
10 20 4 5 8 12 18

60

66 90 93 95 70 75 80 85
61 62

4 5 8
12 18 25 56 57 58

25 56 57 58

You might also like