arbres bicolores (rouge et noire).

publicité
Les Arbres Bicolores (Rouge et Noir)
On a vu que les arbres AVL et les arbres B sont des structures de données à critère
d’équilibre. L’inconvénient que ses structures possèdent c’est qu’ils nécessitent plusieurs
opérations de regroupement ou d’éclatement après une opération d’insertion ou de
suppression. Aussi, la hauteur n’est pas vraiment maintenue au niveau des feuilles.
La structure de données d’arbre rouge et noir nécessite des opérations minimales après
une mise à jour pour conserver sa propriété d’arbre équilibré.
Définition : Un arbre rouge et noir est un arbre binaire de recherche où chaque nœud est de
couleur rouge ou noire de telle sorte que :
1. Les feuilles sont nulles et noires,
2. Les fils d'un nœud rouge sont noirs, (ou bien le père d’un nœud rouge est toujours
noir)
3. Toutes les feuilles ont la même hauteur noire : Le nombre des nœuds noirs (internes)
dans un chemin de la racine à n’importe quelle feuille est identique.
Exemple : Un arbre noir avec hauteur noire égale à 3.
17
23
7
21
3
31
11
22
18
29
19
Propriétés :
-
Le nombre des feuilles égale au nombre des nœuds internes plus 1.
-
Le nombre des nœuds noirs internes est majoritaire (supérieur au noeuds rouges).
Autrement dit, l’hauteur noire > l’hauteur/2.
-
On ne peut pas avoir deux nœuds rouges successifs le long d’un chemin de la racine
vers une feuille.
Opération de Rotation et de Changement de Couleur : Afin de rééquilibrer un arbre
bicolore lors d’une mise à jour, on commence d’abord par étudier les propriétés des
opérations suivantes :
1 – Factorisation distribution de la couleur noire :
Factorisation
P
Distribution
Y
X
P
X
Y
Dans ces deux cas l’hauteur noire n’est pas changée.
2 – Rotation à gauche et à droite :
P
X
Rotation à droite
P
X
Y
X1
Rotation à gauche
X1
X2
X2
Y
Insertion dans un arbre rouge-noir :
L’insertion d’une clé X dans un arbre bicolore est identique à celle d’un ABR. Alors,
une feuille nulle sera éliminée et remplacée par X, et deux nouvelles feuilles nulles seront
crées et accrochées à X. La couleur de X sera rouge pour que la hauteur noire de l’arbre ne se
modifie pas.
30
30
Insertion de 31
29
29
31
Si le Père est noir, toutes les conditions d’équilibre de l’arbre bicolore sont respectées.
Si le Père est Rouge, la deuxième condition d’équilibre n’est plus respectée. Alors on
distingue 4 cas :
1er Cas : Le père P est la racine : Alors on change la couleur de P en noir. C’est le seul cas où
la hauteur noire est incrémentée.
P
P
X
X
Y
X1
Y
X2
X1
X2
2ème Cas : Le frère de P (F) est rouge : Dans ce cas, le grand père G doit être noir. Alors on
distribue la couleur noire vers P et F.
G
G
P
P
F
X
F
X
F1
F2
F1
Y
X1
F2
Y
X2
X1
X2
C’est le seul cas où on doit vérifier plus haut si la deuxième condition d’équilibre est
encore vérifiée. Dans le pire des cas, on effectue lg2(n) opérations de changement de couleurs.
3ème Cas : Le frère de P (F) est noir : Si X est le fils gauche de P, alors on effectue une rotation
à droite entre P et G en changeant leurs couleurs.
G
P
P
F
G
X
X
F
F1
Y
X1
X2
F2
X1
X2
Y
F1
F2
On note que les sous arbres enracinés à X1, X2 et Y ont au moins un nœud noir pour
faire l’équilibre avec le nœud noir F.
Si X est le fils droit de P, alors on effectue d’abord une rotation à gauche entre X et P, puis
une rotation à gauche entre X et G en changeant leurs couleurs.
G
G
P
F
X
X
F
P
F1
F2
F1
F2
X2
Y
X1
X2
Y
X1
X
G
P
F
Y
X1
X2
F1
F2
Suppression d’un arbre rouge-noir :
La suppression d’une clé X d’un arbre bicolore est identique à celle d’un ABR. Alors,
Dans le cas ou le nœud X a plusieurs descendants, on sélectionne un nœud du SAG ou du
SAD contenant la clé Y pour le supprimer.
La suppression du nœud Y ne pose aucun problème vis-à-vis l’équilibre noir si ce
nœud est rouge. Par contre, si le nœud à supprimer est noir, on doit effectuer des opérations
de rééquilibrage afin de régler l’hauteur noir de l’arbre.
30
30
Suppression de 40
20
20
40
45
55
30
20
40
45
55
55
45
Téléchargement