Vous êtes sur la page 1sur 4

Suppression d’un élément dans un B-Arbre  

On cherche la clé que l’on souhaite supprimer. Comme pour l’insertion, nous nous assurons que nous
pouvons descendre dans l’arbre et supprimer la clé en toute légalité.

Figure 1 Exemple de B-arbre

A. Méthodes

1. Si la clé k est dans le nœud x et que x est une feuille, supprimez la clé k de x.

2. Si la clé k se trouve dans le nœud x et que x est un nœud interne, procédez comme suit.

a) Si l'enfant y qui précède k dans le nœud x a au moins t clés, alors trouvez le prédécesseur k0 de k
dans le sous-arbre enraciné en y. Supprimez récursivement k0 et remplacez k par k0 dans x. (Nous
pouvons trouver k0 et le supprimer en un seul passage vers le bas.)

b) Si y a moins de t clés, alors, symétriquement, examinez l'enfant z qui suit k dans le nœud x. Si z a
au moins t clés, alors trouvez le successeur k0 de k dans le sous-arbre enraciné en z. Supprimez
récursivement k0 et remplacez k par k0 dans x. (Nous pouvons trouver k0 et le supprimer en un seul
passage vers le bas.)

c) Sinon, si à la fois y et z n'ont que t-1 clés, fusionnez k et tout z en y, de sorte que x perd à la fois k
et le pointeur vers z, et y contient maintenant 2t-1 clés. Libérez ensuite z et supprimez récursivement
k de y.
3. Si la clé k n'est pas présente dans le nœud interne x, déterminez la racine xc(i) du sous-arbre
approprié qui doit contenir k, si k est présent dans l'arbre. Si xc(i) n'a que t-1 clés, exécutez l'étape 3a
ou 3b si nécessaire pour garantir que nous descendons à un nœud contenant au moins t clés.
Terminez ensuite en récursif sur le fils approprié de x.

a) Si xc(i) n'a que t-1 clés mais a un frère immédiat avec au moins t clés, donnez à xc(i) une clé
supplémentaire en déplaçant une clé de x vers le bas dans xc(i), en déplaçant une clé de xc (i) le frère
gauche ou droit immédiat de 's up dans x, et déplacer le pointeur enfant approprié du frère dans
xc(i).

b) Si xc(i) et les deux frères immédiats de xc(i) ont des clés t-1, fusionnez xc(i) avec un frère, ce qui
implique de déplacer une clé de x vers le bas dans le nouveau nœud fusionné pour devenir la
médiane clé pour ce nœud.

Étant donné que la plupart des clés d'un arbre B se trouvent dans les feuilles, les opérations de
suppression sont le plus souvent utilisées pour supprimer les clés des feuilles. La procédure de
suppression récursive agit alors en un seul passage descendant dans l'arbre, sans avoir à effectuer de
sauvegarde. Cependant, lors de la suppression d'une clé dans un nœud interne, la procédure effectue
un passage descendant dans l'arbre mais peut devoir revenir au nœud d'où la clé a été supprimée
pour remplacer la clé par son prédécesseur ou son successeur (cas 2a et 2b).

B. Exemple d’illustration

Nous esquissons le fonctionnement de la suppression avec divers cas de suppression de clés d'un
arbre B :

Comme arbre de départ nous prenons :

1. Suppression de la lettre F dans le B-arbre. Le noeud en bleu contenait la clé supprimée, c’est le
noeud que nous avons manipulé.
2. a) Suppression de la lettre M dans le B-arbre précédent. Le noeud bleu contenait la clé
supprimée. On lui a ajouter une nouvelle clé issue du nœud vert afin qu’il reste légal.

Figure 2 Suppression de la lettre M

b) Suppression de la lettre G dans le B-arbre précédent. Le nœud rouge contenait la clé


supprimée. Le nœud rouge est le résultat (légal) de la fusion des deux fils de la clé enlevée :
on ne pouvait pas appliquer une rotation comme précédemment.

3. A) Suppression de la lettre D dans le B-arbre précédent. Comme on ne peut pas descendre


dans la récursivité (car le nœud C L ne contient que deux clés) nous avons fusionner les deux
fils de la racine en rajoutant la clé P. Le nœud vert est le résultat de cette fusion. Le nœud
bleu contenait la clé supprimée. Le nœud rouge quant à lui est le nœud de la racine (vide).

On supprime la racine maintenant vide pour obtenir un arbre de hauteur diminué de 1.

B) Suppression de la lettre D dans le B-arbre précédent. Comme on ne peut pas descendre


dans la récursivité (car le nœud A B ne contient que deux clés) mais nous ne pouvons pas
fusionner les deux fils de la racine car le fils gauche contient trois clés. Les nœuds verts est le
résultat d’une rotation des clés. Le nœud bleu contenait la clé supprimée.

Vous aimerez peut-être aussi