Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
http://zegour.esi.dz email: d_zegour@esi.dz
Les arbres AVL
Arbres AVL
Un arbre AVLest un arbre de recherche binaire équilibré
Ajouter un champ balance (facteur d'équilibrage ) au niveau de chaque noeud
80
70 0 +1
32 73
45
86
10
82 94
0 0
0 0 +1
-1
90 0
0
| Profondeur(fg(n) )– Profondeur(fd(n)) | <= 1
80
70 0
+1
32 73
45
86
10
82 94
0 0
0 0 +1
-1
90 0
0
5 +1
+1 +2
Arbres AVL (Cas de déséquilibre)
0
80
70 0 +1
32 73
45
86
10
82 94
0 0
0 0 +1
-1
90 0
0
55 -1 -1
+2
Les arbres AVL
Arbres AVL (Cas de déséquilibre)
0
Arbres AVL (Techniques d'équilibrage ) Examinons un sous
arbre de racine le plus jeune antécédent qui devient non
équilibré suite à une insertion
Cas où le facteur d'équilibrage est +1
A
B T3
T1 T2
+1
0
h=n h=n
h=n
B
Le nouveau nœud est inséré dans le sous arbre gauche de B.
Donc f(B) devient 1 et f(A) devient 2
Arbres AVL (Techniques d'équilibrage ) Examinons un sous
arbre de racine le plus jeune antécédent qui devient non
équilibré suite à une insertion
Les arbres AVL
A
B T4
T1
+1
0
C
T2 T3
0
h=n
h=n
h=n-1 h=n-1
B
Le nouveau nœud est inséré dans le sous arbre droit de B. f(B) Cas où le facteur
d'équilibrage est +1
Arbres AVL (Techniques d'équilibrage ) Transformer l'arbre de telle sorte que
l'inordre soit préservé
l'arbre transformé soit équilibré
Arbres AVL (Techniques d'équilibrage )
(a) rotation droite du nœud A
Les arbres AVL
A
B T3
T1 T2
+2 +1
h=n h=n
h=n
B
A B
T3 T1
T2 0 0
h=n
h=n h=n
B
Arbres AVL (Techniques d'équilibrage ) (b) rotation gauche du nœud B suivie par une rotation droite du nœud A
A
B T4
T1
+2
-1
C
T2 T3
0
h=n
h=n
h=n-1 h=n-1
B
h=n-1
B A
T4 T1
0
0
C
T2
-1
h=n h=n-1 h=n
B
T3
Arbres AVL (Algorithme d'insertion)
La première partie de l'algorithme consiste à insérer la clé dans l'arbre sans tenir compte du facteur d'équilibrage Elle garde aussi la trace du plus jeune antécédent, soit Y qui devient non équilibré
La deuxième partie fait la transformation à partir de Y
Les arbres AVL
Arbres AVL (Rotation gauche)
N
D D
G D
D G
P
D
D G
N D
D
G
P
AFF_FD(N, DG) AFF_FG(D, N)) AFF_FG(Parent, D) Rotation gauche(N)
Arbres AVL (Rotation droite)
N
G D
G D
G G
P
G
D G
G N
G D
P
AFF_FG(N, GD) AFF_FD(G, N)) AFF_FD(Parent, G) Rotation droite (N)
Les arbres AVL
Arbres AVL (Exemples)
Insérons la séquence : A, B, X, L, M, C, D, E, H, R, Fdans un arbre AVL.
Insertion A, B, X
A
B
X
A B
X
Arbres AVL (Exemples)
Insérons la séquence : A, B, X, L, M, C, D, E, H, R, Fdans un arbre AVL.
Insertion L, M
Les arbres AVL
A B
X
L
M
A B
M
L X
Arbres AVL (Exemples)
Insérons la séquence : A, B, X, L, M, C, D, E, H, R, Fdans un arbre AVL.
Insertion C
A B
M
L X
X
B L
M
C X
A
Arbres AVL (Exemples)
Insérons la séquence : A, B, X, L, M, C, D, E, H, R, Fdans un arbre AVL.
Insertion D, E
Les arbres AVL
B L
M
C X
A
D
B L
M
D X
A
C E
Arbres AVL (Exemples)
Insérons la séquence : A, B, X, L, M, C, D, E, H, R, Fdans un arbre AVL.
Insertion H, R, F
D
L
R
D X
B
E H C A
M
Arbres AVL (Suppression)
Étape 1 : comme dans un arbre de recherche binaire ordinaire
Étape 2 : mettre à jour les balances Cas où la balance d’un nœud A devient +2
Le fils gauche B de A doit exister Les cas suivants peuvent se présenter a) B a une balance égale à + 1
b) B a une balance égale à – 1 c) B a une balance égale à 0
Même traitement symétrique dans le cas où la balance d’un nœud A devient -2
Les arbres AVL
Arbres AVL (Suppression) B a une balance égale à + 1
A
B n-1
n n-1
+2
+1
A B
n-1 n
n-1 0
0
Arbres AVL (Suppression) B a une balance égale à -1
B a donc un fils à sa droite, soit C.
Cas Balance (C)= 0
A
B n-1
n-1 n
+2
-1
A
B n-1
n-1 +2
-1
C
n-1 n-1
0
Les arbres AVL
Arbres AVL (Suppression)
B a une balance égale à -1 , C son fils droit avec Balance(C)=0
A C
n-1 n-1
0
0 B
n-1 n-1
0 A
B n-1
n-1 +2
-1
C
n-1 n-1
0
Arbres AVL (Suppression) B a une balance égale à -1
B a donc un fils à sa droite, soit C.
Balance (C)= +1
A
B n-1
n-1 n
+2
-1
A
B n-1
n-1 +2
-1
C
n-1 n-2
+1
Les arbres AVL
Arbres AVL (Suppression)
A C
n-1 n-2
0
-1 B
n-1 n-1
0 A
B n-1
n-1 +2
-1
C
n-1 n-2
+1
B a une balance égale à -1 , C son fils droit avec Balance(C)=+1
Arbres AVL (Suppression) B a une balance égale à -1
B a donc un fils à sa droite, soit C.
Balance (C)= -1
A
B n-1
n-1 n
+2
-1
A
B n-1
n-1 +2
-1
C
n-2 n-1
-1
Les arbres AVL
Arbres AVL (Suppression)
A C
n-1 n-1
0
0 B
n-2 n-1
+1 A
B n-1
n-1 +2
-1
C
n-2 n-1
-1
B a une balance égale à -1 , C son fils droit avec Balance(C)=-1
Arbres AVL (Suppression) B a une balance égale à 0
A
B n-1
n n
+2
0
A B
n-1 n
n -1
+1
Les arbres AVL
Arbres AVL (Analyse théorique)
la profondeur maximale d'un arbre binaire équilibré est 1.44*Log2n La recherche dans un tel arbre n'exige jamais plus de 44% de plus de comparaisons que pour un arbre binaire complet
Operations de maintenance :
- Restructuration = 1 rotation ou double rotation -Insertion : au plus 1 restructuration
-suppression : au plus Log2 (N) restructurations
Les arbres Rouge et Noir
Arbre 2-4
37
50 30
35
39 70
10
20 33
34
36 38 40 60
80 100
90
32
Arbre rouge et noir
Arbres Red Black
Un arbre rouge et noir (RB-tree) est un arbre binaire de recherche où chaque nœud est de couleur rouge ou noire .
- Nœuds noirs : équilibrage parfait
- Nœuds rouges : tolérer légèrement le déséquilibre Pire des cas:
Alternance entre les nœuds rouges et noirs.
De plus, toutes les branches issues de tout nœud : 1. Ne possèdent pas deux nœuds rouges consécutifs.
2. Possèdent le même nombre de nœuds noirs La racine est noir
Arbres Red Black (Insertion)
Insertion comme dans un arbre de recherche binaire.
Si son père est aussi rouge, un algorithme de maintenance est appliqué Le nœud inséré est toujours une feuille
On lui attribue la couleur rouge
Les arbres Rouge et Noir
Arbres Red Black(Insertion) CAS 1: le frère F de P est rouge
P P
F P
X
P P
F P
X
Les nœuds P et F deviennent noirs et leur père PP devient rouge.
Le processus continue en cascade X : nœud introduit
Arbres Red Black(Insertion)
CAS 2: le frère F de P est noir et X est le fils gauche de P.
P P
F P
X D
P
P P X P
D F P
Rotation droite du nœud PP.
P devient noir et PP rouge.
Les arbres Rouge et Noir
Arbres Red Black(Insertion)
CAS 3: le frère F de P est noir et X est le fils droit de P.
P P
F P
X
B A
X P P P
B F A
Rotation gauche du nœud P + rotation droite du nœud PP.X devient noir et PP rouge.
Le processus se termine
Arbres Red Black(Insertion)
CAS 4: le nœud père P est la racine de l'arbre
P
X
P
X
Le nœud père devient noir
C'est le seul cas où la hauteur noire de l'arbre augmente.
Les arbres Rouge et Noir
Arbres Red Black (Exemple)
13
10 13
10 13
5
5 10
Rotation 13
Couleur du frère de P= noir Et X = fg(P)
X P
Insérer 13 Insérer 10
Insérer 5
Arbres Red Black(exemple)
5 10
13
Coloration Couleur du frère de P= rouge Insérer 2
2 X
P PP
5 10
13
2 X
P PP
5 10
13
2 X
P Coloration PP
Les arbres Rouge et Noir
Arbres Red Black (exemple)
Double rotation Insérer 4
5 10
13
2
X P PP
4
Couleur du frère de P= noir ET X = fd(P) ET P=FG(PP) 4
10
13
2 5
Suppression comme dans un arbre de recherche binaire.
On considère que le nœud qui remplace le nœud supprimé porte une couleur noire en plus.
Ceci signifie qu'il devient noir s'il est rouge et qu'il devient doublement noir s'il est déjà noir.
L’algorithme de maintenance a donc pour rôle de supprimer ce nœud doublement noir.
Si le nœud physiquement supprimé est noir, un algorithme de maintenance est appliqué.
Arbres Red Black (Suppression)
Les arbres Rouge et Noir
P P
F X
P
F X
Soit X le noeud doublement noir (Supposé ici comme un fils gauche) et P son père CAS 1: Le frere F de X est noir et a deux fils noirs
P P
F X
F X
P P
Transformer F en un noeud rouge
Si le parent P est noir, le processus continue en remontant dans l’arbre. X devient le nouveau noeud doublement noir.
Arbres Red Black (Suppression)
P P
F
A X
F D
B C
F
F P D
X A B C
CAS 2: Le frère F du noeud X est noir et a un fils droit rouge (FD)
Rotation gauche de P
Recolorer : P et FD deviennent noirs et la couleur de F est celle de P avant la transformation.
Arbres Red Black (Suppression)
Les arbres Rouge et Noir
P P
F F G X
A B
F G
F P
X A B
CAS 3: si le frere F du noeud X est noir et a un fils gauche rouge(FG)
Rotation droite (F) + rotation gauche (P).
Recolorer : P devient noir et la couleur de FG est celle de P avant la transformation.
Le processus se termine Arbres Red Black (Suppression)
P P
S X
A B
CAS 4: Le frère F de X est rouge
S B P
P A X
Rotation droite(P)
Arbres Red Black (Suppression)
Les arbres Rouge et Noir
P X
Soit X le noeud doublement noir
CAS 0: X est la racine de l’arbre
X
X devient simplement un noeud noir.
C’est le seul cas ou la hauteur de l’arbre diminue. Le processus se termine.
Arbres Red Black (Suppression)
Arbres Red-Black (Analyse théorique)
la profondeur maximale d'un arbre binaire équilibré est 2*Log2(n)
Recherche, insertion et suppression : O(Log2(n)) Operations de maintenance :
- Restructuration et coloration.
-Insertion : au plus 1 restructuration et au plus Log2(n) colorations.
-suppression : au plus 2 restructurations et au plus Log2(n) colorations.
N : nombre d’élements insérés.