CC30A Algoritmos y estructuras de datos
Clase Auxiliar 13/10/2000
Arboles B
La idea de los árboles 2-3 se puede generalizar a árboles
t - (2t-1), donde t>=2 es un parámetro fijo. En la
práctica,
t puede ser bastante grande, por ejemplo t =
100 o más.
Inserción en un árbol B:
-
Se agrega una nueva llave al nivel inferior.
-
Si el nodo rebalsa, es decir si queda con 2t-1 hijos, se divide en 2 nodos
con t-1 hijos cada uno y sube un elemento al nodo padre. Si el padre rebalsa,
se repite el procedimiento un nivel más arriba.
-
Finalmente, si la raiz rebalsa, se divide en 2 y se crea una nueva raiz
un nivel más arriba.
Eliminación en un árbol B:
-
Se elimina la llave, y su hoja respectiva, del nivel inferior.
-
Si la página queda con menos de t-1 hijos (underflow) se le piden
prestados algunos al hermano, por ejemplo mitad y mitad.
-
Si el hermano no tiene para prestar, entonces se fusionan los 2 nodos y
se repite el procedimiento con el padre.
-
Si la raíz queda vacía, se elimina.
A continuación un ejemplo de eliminación cuando t=2:

Variantes de los árboles B
-
Arboles B*: Cuando un nodo rebalsa se trasladan hijos
hacia el hermano, y sólo se crea un nuevo nodo cuando ambos rebalsan.
Esto permite aumentar la utilización mínima de los nodos,
que antes era de un 50%.
-
Arboles B+: La información solo se almacena en
las hojas, y los nodos internos contienen los separadores que permiten
realizar la búsqueda de elementos. Un ejemplo de un árbol
2-3+ es el siguiente:

Para mayor información sobre árboles B+ les recomiendo
el libro Data structures, algorithms and performance, de Derick
Wood, sección 10.4.