You are on page 1of 44

Pr ZEGOUR DJAMEL EDDINE Ecole Suprieure dInformatique (ESI) http://zegour.esi.dz email: d_zegour@esi.

dz

Les arbres AVL


Arbres AVL Un arbre AVL est un arbre de recherche binaire quilibr
0 32 0 10 0 0 73 0 +1 70 0 82 80 -1 86 +1

94

45

90

| Profondeur(fg(n) ) Profondeur(fd(n)) | <= 1 Ajouter un champ balance (facteur d'quilibrage ) au niveau de chaque noeud

Les arbres AVL


Arbres AVL (Cas de dsquilibre)
0 +2 0 +1 0 10 32 0 0 73 +1 70 0 82

80 -1 86 +1

94

+1

45

90

0 5

Les arbres AVL


Arbres AVL (Cas de dsquilibre)
0 +2 0 32 0 0 73 -1

80 -1 0 82 86 +1

+1
70

-1 0 10

94

45

90

55

Les arbres AVL


Arbres AVL (Techniques d'quilibrage )
Examinons un sous arbre de racine le plus jeune antcdent qui devient non quilibr suite une insertion
+1 0 B T3 A

T1

T2

h=n

h=n
B

h=n

Cas o le facteur d'quilibrage est +1

Le nouveau nud est insr dans le sous arbre gauche de B. Donc f(B) devient 1 et f(A) devient 2

Les arbres AVL


Arbres AVL (Techniques d'quilibrage )
Examinons un sous arbre de racine le plus jeune antcdent qui devient non quilibr suite une insertion

+1 0 B

T4

T1

h=n
T3

h=n Cas o le facteur d'quilibrage est +1

T2

h=n-1
B

h=n-1

Le nouveau nud est insr dans le sous arbre droit de B. f(B) devient -1 et f(A) devient 2.

Les arbres AVL


Arbres AVL (Techniques d'quilibrage )
Transformer l'arbre de telle sorte que

l'inordre soit prserv


l'arbre transform soit quilibr

Les arbres AVL


Arbres AVL (Techniques d'quilibrage )

(a) rotation droite du nud A


+2 +1 B T3 T2 T1 A

0 B 0 A

T1

h=n

h=n
B

T2

T3

h=n
B

h=n

h=n

h=n

Les arbres AVL


Arbres AVL (Techniques d'quilibrage ) (b) rotation gauche du nud B suivie par une rotation droite du nud A
0 +2 -1 A 0 B C

B C 0

T4

-1

T1

h=n
T3

T1

T2

T3

T4

h=n

T2

h=n

h=n-1
B

h=n-1

h=n

h=n-1
B

h=n-1

Les arbres AVL


Arbres AVL (Algorithme d'insertion)

La premire partie de l'algorithme consiste insrer la cl dans l'arbre sans tenir compte du facteur d'quilibrage Elle garde aussi la trace du plus jeune antcdent, soit Y qui devient non quilibr La deuxime partie fait la transformation partir de Y

Les arbres AVL


Arbres AVL (Rotation gauche)
P
P

Rotation gauche(N)
N D

D D

D G

D D

D G

AFF_FD(N, DG)

AFF_FG(D, N))

AFF_FG(Parent, D)

Les arbres AVL


Arbres AVL (Rotation droite)
P
P

Rotation droite (N)


N G

G G

G G

G D

G D

AFF_FG(N, GD)

AFF_FD(G, N))

AFF_FD(Parent, G)

Les arbres AVL


Arbres AVL (Exemples) Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL.
Insertion A, B, X

Les arbres AVL


Arbres AVL (Exemples) Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL.
Insertion L, M

B B A X A M

L L M X

Les arbres AVL


Arbres AVL (Exemples) Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL.
Insertion C
B L

Les arbres AVL


Arbres AVL (Exemples) Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL.
Insertion D, E
L L

Les arbres AVL


Arbres AVL (Exemples) Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL.
Insertion H, R, F
L

Les arbres AVL


Arbres AVL (Suppression)
tape 1 : comme dans un arbre de recherche binaire ordinaire tape 2 : mettre jour les balances Cas o la balance dun nud A devient +2 Le fils gauche B de A doit exister Les cas suivants peuvent se prsenter a) B a une balance gale + 1 b) B a une balance gale 1 c) B a une balance gale 0

Mme traitement symtrique dans le cas o la balance dun nud A devient -2 Traitement peut continuer en cascade

Les arbres AVL


Arbres AVL (Suppression) B a une balance gale + 1

+2 +1 B

0 A B 0 n-1 n A

n-1

n-1

n-1

Les arbres AVL


Arbres AVL (Suppression) B a une balance gale -1
Cas Balance (C)= 0
+2 -1 B n-1 A -1 B n-1 +2

n-1

n-1

n-1

n-1

B a donc un fils sa droite, soit C.

Les arbres AVL


Arbres AVL (Suppression) B a une balance gale -1 , C son fils droit avec Balance(C)=0

+2

0
A -1 C 0 A

n-1

0 B

n-1

0 n-1 n-1 n-1 n-1

n-1

n-1

Les arbres AVL


Arbres AVL (Suppression) B a une balance gale -1
Balance (C)= +1
+2
-1 B n-1 +2 -1 A

n-1

n-1

n-1

+1

n-1

n-2

B a donc un fils sa droite, soit C.

Les arbres AVL


Arbres AVL (Suppression) B a une balance gale -1 , C son fils droit avec Balance(C)=+1

+2

0
A -1 C -1 A

n-1

0 B

n-1

+1 n-1 n-1 n-2 n-1

n-1

n-2

Les arbres AVL


Arbres AVL (Suppression) B a une balance gale -1
Balance (C)= -1
+2 -1 B n-1

+2

-1
B n-1

n-1

n-1

-1

n-2

n-1

B a donc un fils sa droite, soit C.

Les arbres AVL


Arbres AVL (Suppression) B a une balance gale -1 , C son fils droit avec Balance(C)=-1

+2

0 C 0 A

-1

n-1

+1 B

n-1

-1 n-1 n-2 n-1 n-1

n-2

n-1

Les arbres AVL


Arbres AVL (Suppression) B a une balance gale 0

+2 0 B

-1 A B +1 n-1 n A

n-1

Les arbres AVL


Arbres AVL (Analyse thorique)
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

Arbre rouge et noir


70

39 35 10

20

33

36

38

40

60

90

32

34 80 100

Les arbres Rouge et Noir


Arbres Red Black
Un arbre rouge et noir (RB-tree) est un arbre binaire de recherche o chaque nud est de couleur rouge ou noire . De plus, toutes les branches issues de tout nud : 1. Ne possdent pas deux nuds rouges conscutifs. 2. Possdent le mme nombre de nuds noirs La racine est noir - Nuds noirs : quilibrage parfait - Nuds rouges : tolrer lgrement le dsquilibre

Pire des cas: Alternance entre les nuds rouges et noirs.

Les arbres Rouge et Noir


Arbres Red Black (Insertion) Insertion comme dans un arbre de recherche binaire.
Le nud insr est toujours une feuille On lui attribue la couleur rouge

Si son pre est aussi rouge, un algorithme de maintenance est appliqu

Les arbres Rouge et Noir


Arbres Red Black(Insertion)
CAS 1: le frre F de P est rouge

P P P F P

P P F

X : nud introduit

Les nuds P et F deviennent noirs et leur pre PP devient rouge.


Le processus continue en cascade

Les arbres Rouge et Noir


Arbres Red Black(Insertion)
CAS 2: le frre F de P est noir et X est le fils gauche de P.

P P P D P F X

P P P

D P

Rotation droite du nud PP.


P devient noir et PP rouge.
Le processus se termine

Les arbres Rouge et Noir


Arbres Red Black(Insertion)
CAS 3: le frre F de P est noir et X est le fils droit de P.
P P P F

P P A B F

X A B

Rotation gauche du nud P + rotation droite du nud PP. X devient noir et PP rouge.
Le processus se termine

Les arbres Rouge et Noir


Arbres Red Black(Insertion)
CAS 4: le nud pre P est la racine de l'arbre

Le nud pre devient noir

C'est le seul cas o la hauteur noire de l'arbre augmente.


Le processus se termine

Les arbres Rouge et Noir


Arbres Red Black (Exemple)
Insrer 13
13

Insrer 10

13

10

Insrer 5 Couleur du frre de P= noir Et X = fg(P)

13

10

P
10

Rotation
5

13

Les arbres Rouge et Noir


Arbres Red Black(exemple) Insrer 2 PP
10

Couleur du frre de P= rouge


13

PP
10

Coloration P

PP
10

P Coloration

13

13

Les arbres Rouge et Noir


Arbres Red Black (exemple) Insrer 4

10

10

PP
5 13

Couleur du frre de P= noir ET X = fd(P) ET P=FG(PP)

13

P X
4

Double rotation

Les arbres Rouge et Noir


Arbres Red Black (Suppression)

Suppression comme dans un arbre de recherche binaire. Si le nud physiquement supprim est noir, un algorithme de maintenance est appliqu. On considre que le nud qui remplace le nud 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 dj noir. Lalgorithme de maintenance a donc pour rle de supprimer ce nud doublement noir.

Les arbres Rouge et Noir


Arbres Red Black (Suppression)
P X P F

CAS 1: Le frere F de X est noir et a deux fils noirs


P

Soit X le noeud doublement noir (Suppos ici comme un fils gauche) et P son pre

Transformer F en un noeud rouge


P X P F X P F

Si le parent P est noir, le processus continue en remontant dans larbre. P devient le nouveau noeud doublement noir.

Les arbres Rouge et Noir


CAS 2: Le frre F du noeud X est noir et Arbres Red Black (Suppression) a un fils droit rouge (FD)
P
X P F P

F
F D

F D

Rotation gauche de P Recolorer : P et FD deviennent noirs et la couleur de F est celle de P avant la transformation. Le processus se termine

Les arbres Rouge et Noir


CAS 3: Le frere F du noeud X est noir et a Arbres Red Black (Suppression) un fils gauche rouge(FG)
P X P F G F P F G F

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

Les arbres Rouge et Noir


Arbres Red Black (Suppression)

CAS 4: Le frre F de X est rouge

P X P S

S P B

X P

Rotation gauche (P)

Le processus continue selon le cas 1, 2 ou 3

Les arbres Rouge et Noir


Arbres Red Black (Suppression)
Soit X le noeud doublement noir

CAS 0: X est la racine de larbre

X P

X devient simplement un noeud noir. Cest le seul cas ou la hauteur de larbre diminue. Le processus se termine.

Les arbres Rouge et Noir


Arbres Red-Black (Analyse thorique)
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 dlements insrs. la profondeur maximale d'un arbre binaire quilibr est 2*Log2(n)

Recherche, insertion et suppression : O(Log2(n))

You might also like