Upload
sandra-padilla-contreras
View
214
Download
0
Embed Size (px)
Citation preview
Árboles B
M.C. Meliza Contreras González
2
Eliminación de un nodo en un árbol B
La eliminación de un elemento es directa si no se requiere corrección para garantizar sus propiedades.
Hay dos estrategias populares para eliminar un nodo de un árbol B.
1. localizar y eliminar el elemento, y luego corregir2. hacer una única pasada de arriba a abajo por el árbol, pero cada vez que
se visita un nodo, reestructurar el árbol para que cuando se encuentre el elemento a ser borrado, pueda eliminarse sin necesidad de continuar reestructurando
Se pueden dar dos problemas al eliminar elementos: primero, el elemento puede
ser un separador de un nodo interno. Segundo, puede suceder que al borrar el elemento, el número de elementos del nodo quede debajo de la cota mínima.
3
Eliminación de un elemento del nodo hoja
1. Busque el valor a eliminar.2. Si el valor se encuentra en un nodo hoja, se elimina directamente la
clave, posiblemente dejándolo con muy pocos elementos; por lo que se requerirán cambios adicionales en el árbol.
6 | 9
2 | 4 10 | 157
Árbol de orden 1, Eliminación del 15
6 | 9
2 | 4 10 7
6 | 9
2 | 4 10 | 157
Árbol de orden 1, Eliminación del 7
6 | 9
2 | 4 10 | 15
4
Eliminación de un elemento de un nodo interno
Cada elemento de un nodo interno actúa como valor separador para dos subárboles, y cuando ese elemento es eliminado, pueden suceder dos casos
1. En el primero, tanto el hijo izquierdo como el derecho tienen el número mínimo de elementos
2. En el segundo caso, uno de los dos nodos hijos tienen un número de elementos mayor que el mínimo.
.
5
Eliminación de un elemento de un nodo interno
Primer Caso
1. Tanto el hijo izquierdo como el derecho tienen el número mínimo de elementos, n. Pueden entonces fundirse en un único nodo con 2n elementos.
6
4 15 4 | 15
30 | 38 | 43
44 | 50 10 | 20 | 25 32 | 34 40 | 4210 | 20
Árbol de orden 1, Eliminación del 6
Árbol de orden 2, Eliminación del 38
30 | 43
44 | 50 10 | 20 | 25 32|34|40 | 4210 | 20
6
Eliminación de un elemento de un nodo interno
Segundo CasoUno de los dos nodos hijos tienen un número de elementos mayor que el mínimo. Entonces se debe hallar un nuevo separador para estos dos subárboles.
Note que el mayor elemento del árbol izquierdo es el mayor elemento que es menor que el separador. De la misma forma, el menor elemento del subárbol derecho es el menor elemento que es mayor que el separador. Ambos elementos se encuentran en nodos hoja, y cualquiera de los dos puede ser el nuevo separador.
1. Si el valor se encuentra en un nodo interno, escoja un nuevo separador (puede ser el mayor elemento del subárbol izquierdo o el menor elemento del subárbol derecho), elimínelo del nodo hoja en que se encuentra, y reemplace el elemento a eliminar por el nuevo separador.
2. Como se ha eliminado un elemento de un nodo hoja, se debe tratar este caso de manera equivalente.
30 | 38 | 44 | 56
58 | 6010 | 20 | 25 32 | 34 40 | 4210 | 20 | 25 50 | 52
Ejemplo
Árbol de orden 2, Eliminación del 43
30 | 38 | 43 | 56
58 | 6010 | 20 | 25 32 | 34 40 | 4210 | 20 | 25 44 | 50 | 52