Vous êtes sur la page 1sur 37

Les arbres

Arbres AVL Un arbre AVL est un arbre binaire quilibr dans lequel les profondeurs des deux sous arbres de chaque nud ne diffrent pas plus d'un.

A chaque nud est associ un facteur d'quilibrage gal la diffrence entre la profondeur du sous arbre gauche et celle du sous arbre droit.

Les arbres
Arbres AVL Quand on insre un lment, l'arbre peut devenir non quilibr
La figure illustre tous les cas possibles d'insertions Les ui dsignent les cas o l'arbre se dsquilibre. L'arbre devient non quilibr quand le nouveau nud insr est un descendant gauche d'un nud qui avait un facteur d'quilibrage gal 1 (u1 u8) L'arbre devient non quilibr quand le nouveau nud insr est un descendant droit d'un nud qui avait un facteur d'quilibrage gal -1(u9 u12).
Le plus jeune antcdent qui devient non quilibr

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

Prenons le cas o le facteur d'quilibrage est 1 pour ce jeune antcdent

Les arbres
Arbres AVL (Techniques d'quilibrage )
A dsigne le plus jeune antcdent devenu non quilibr Puisque f(A) = 1, son sous arbre gauche est non NIL Soit donc B le fils gauche f(B) doit donc avoir la valeur 0 Deux cas sont considrer : (a) et (b) (a)le nouveau nud est insr dans le sous arbre gauche de B. Donc f(B) devient 1 et f(A) devient 2 (b) le nouveau nud est insr dans le sous arbre droit de B. f(B) devient -1 et f(A) devient 2.

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

l'inordre soit prserv


l'arbre transform soit quilibr

Les arbres
Arbres AVL (Techniques d'quilibrage )
(a) rotation droite du nud A

(b) rotation gauche du nud B suivie par une rotation droite du nud A

Les arbres
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
Arbres AVL (Rotation gauche)
P
P

Rotation gauche(N)
N D

DD

DG

DD

DG

AFF_FD(N, DG)

AFF_FG(D, N))

AFF_FG(Parent, D)

Les arbres
Arbres AVL (Rotation droite)
P
P

Rotation droite (N)


N G

GG

GG

GD

GD

AFF_FG(N, GD)

AFF_FD(G, N))

AFF_FD(Parent, G)

Les arbres
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
Arbres AVL (Exemples) Insrons la squence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL.
Insertion L, M

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

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

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

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

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

Les arbres
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
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
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
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
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
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
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
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
Arbres AVL (Suppression) B a une balance gale 0

+2 0 B

-1 A B +1 n-1 n A

n-1

Les arbres
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 Pour n grand, l'arbre de recherche binaire quilibr se comporte bien avec un temps de recherche gal Log2(n) + 0.25 En moyenne une rotation est faite pour 46.5% des insertions Operations de maintenance : - Restructuration = 1 rotation ou double rotation - Insertion : au plus 1 restructuration - suppression : au plus Log2 (N) restructurations

Les arbres
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

- Nuds noirs : quilibrage parfait - Nuds rouges : tolrer lgrement le dsquilibre

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

Les arbres
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
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
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
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
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
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
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
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
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
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))