Vous êtes sur la page 1sur 159

ESIP

2 ÉME ANNÉE II
CHAPITRE 3:
ARBRES DE RECHERCHE
2023/2024
PLAN DU CHAPITRE I
❑ Partie I: Introduction

❑ Partie II: Arbres Binaires de Recherche (ABR)

❑ Partie III: Arbres Binaires de Equilibrés (AVL & TAS)

❑ Partie IV: Arbres M-aire de Recherche (AMR)

❑ Partie V: Arbres M-aire de Recherche Equilibrés (B-Arbres)

2
PARTIE I:
INTRODUCTION
PLAN DE LA PARTIE I
❑ Introduction

❑ Définitions et Terminologies

❑ Topologie

❑ Parcours

4
I. INTRODUCTION
❖ Les arbres sont des structures de données fondamentales en informatique,

très utilisés dans tous les domaines, parce qu’ils sont bien adaptés à la

représentation naturelle d’informations homogènes organisées, et d’une

grande commodité et rapidité de manipulation.

❖ Leur usage est multiple, car il capte l’idée de hiérarchie; à titre d’exemples,

nous pouvons citer:

5
I. INTRODUCTION
❖ Leur usage est multiple, car il capte l’idée de hiérarchie; à titre d’exemples,

nous pouvons citer:

❖ Découpage d’un livre en parties, chapitres, sections, paragraphes…,

Livre

PI P II P III

C I.1 C I.2 C II.1 C II.2 C II.3

S II.1.1 S II.1.2 6
I. INTRODUCTION
❖ Leur usage est multiple, car il capte l’idée de hiérarchie; à titre d’exemples,

nous pouvons citer:

❖ Hiérarchies de fichiers,

7
I. INTRODUCTION
❖ Leur usage est multiple, car il capte l’idée de hiérarchie; à titre d’exemples,

nous pouvons citer:

❖ Expressions Arithmétiques

▪ L’expression A - (B + C * (D - E)) * F se A *
représente facilement par un arbre où apparaît + F
clairement la priorité des opérations:
B *
C -
8
D E
I. DÉFINITIONS & TERMINOLOGIES
❖ Un arbre est une structure de données (souvent dynamique) représentant un ensemble

de valeurs organisées hiérarchiquement (non linéaire). Chaque valeur est stockée dans

un nœud. Les nœuds sont connectés entre eux par des arêtes qui représentent des

relations parent/fils.

Arêtes Nœuds
A

B C D

E F G H I
9

J K L
I. DÉFINITIONS & TERMINOLOGIES
❖ Racine: est le nœud qui n'a pas de
Racine
prédécesseur (parent) et possède zéro ou A
Nœud interne
plusieurs fils. La racine constitue la
B C D
caractéristique d'un arbre.
E F G H I
❖ Feuille : est un nœud qui n'a pas de

successeur (fils). Une feuille est aussi appelée J K L

un nœud externe. Feuilles

❖ Nœud interne : est tout nœud qui admet au


10

moins un successeur (fils).


I. DÉFINITIONS & TERMINOLOGIES
❖ Père : est un nœud qui admet au moins un

successeur (fils). Dans l'exemple, D est le père

des nœuds F, G, H et I. A
Père
❖Fils d’un nœud : sont ses successeurs. Dans
B C D

l'exemple, F, G, H, et I sont les fils du nœud


E F G H I
D.
Fils de D
❖ Frères : sont les successeurs ou les fils issus F, G, H, I sont des frères

J K L
d'un même nœud (parent direct). Dans
11

l'exemple, F, G, H et I sont des frères.


I. DÉFINITIONS & TERMINOLOGIES
❖ Sous arbre : est une portion de l'arbre.

Dans l'exemple, le nœud G avec ces deux fils

J et K constituent un sous arbre. A

❖ Une branche est une suite de nœuds


B C D

connectés de père en fils (de la racine à une


E F G H I
feuille).

A-B-E J K L
A-C
A-D-F
A-D-G-J 12
…..
I. DÉFINITIONS & TERMINOLOGIES
❖ Descendants d’un nœud : sont tous les

nœuds du sous arbre de racine nœud. Dans

l'exemple, les descendants de D sont F, G, H, A

I, J, K et L.
B C D

❖ Ascendants d’un nœud : sont tous les


E F G H I
nœuds se trouvant sur la branche de la racine

vers ce nœud. Dans l'exemple, les ascendants J K L

de J sont G, D et A. Les ascendants de E sont


13

B et A.
I. DÉFINITIONS & TERMINOLOGIES
❖ Taille d’un arbre: est le nombre de nœuds

qu’il possède.

Taille de l’arbre ci contre = 12 A


Un arbre vide est de taille égale à 0.
❖Degré d’un nœud : est le nombre de ses fils. B C D

Dans l'exemple, le degré de B est 1, le degré F I


E G H

de D est 4.
J K L
❖ Degré (ou Ordre) d’un arbre : est le degré
maximum de ses nœuds.
14

Degré de l’arbre ci contre = 4


I. DÉFINITIONS & TERMINOLOGIES
❖ Le niveau d'un nœud: est la distance qui le sépare de la racine:

Le niveau de la racine = 0
Le niveau de chaque nœud est égale au niveau de son père plus 1
Le niveau du nœud contenant ‘G' est égal à 2.

Niveaux Racine
0 ………………………………....... A

1 .…………………………………………….......
B C D

2 E F
………………..…………………………………………….......
G H I
15

3 …..…………..…………………………………………….......
J K L
I. DÉFINITIONS & TERMINOLOGIES
❖ La profondeur (hauteur) d'un arbre : est le plus grand niveau, c.à.d la distance

entre la racine et la feuille la plus lointaine. Dans l'exemple ci-dessus, la profondeur de

l'arbre est égal à 3

Niveaux Racine
0 ………………………………....... A

1 .…………………………………………….......
B C D

2 E F
………………..…………………………………………….......
G H I

16

3 …..…………..…………………………………………….......
J K L
I. DÉFINITIONS & TERMINOLOGIES
❖ Forêt : est un ensemble d'arbres.

B C D

E F H I

G L

J K
17
I. TYPOLOGIE
❖Les arbres sont classifiés selon:

leur degré m≥2: On trouve les arbres binaires (m = 2), ternaires (m=3), quaternaires

(m = 4) ,…….., m-aire (m>2).

la propriété d’ordre: entre le nœud père et ses fils, où :

✔ le nœud père possède au moins une clé, les valeurs de sous arbre gauche (droit resp.)
de la clé sont strictement inférieures (supérieures ou égales resp.) à la valeur de la clé.
On parle ici des arbres binaires de recherche (où chaque nœud possède une clé) et des
arbres m-aire de recherche (où chaque nœud possède (m-1) clé),
✔ la valeur du nœud père est supérieure (inférieure resp.) à la valeur de ses fils. On parle
18
ici du TASmax (TASmin)
I. TYPOLOGIE
❖Les arbres sont classifiés selon:

❖La propriété d’équilibrage: On trouve les arbres binaires de recherche

équilibrés (e.g: AVL, TAS, rouge et noir, 2-3-4, …..) et les arbre m-aire de

recherche équilibré (B-arbres, B-arbre*, B-Arbre+, …..)

19
I. PARCOURS
❖ Le parcours d’un arbre consiste à passer par tous ses nœuds.

❖ Les parcours permettent d’effectuer tout un ensemble de traitement sur les

arbres.

❖ On distingue deux types de parcours :

Des parcours en profondeur (depth-first) explorent l'arbre branche par

branche. Parmi lesquels: le Préordre, l‘Inordre et le Postordre.

Des parcours en largeur (breadth-first) explorent l'arbre niveau par niveau


20
I. PARCOURS
❖ Dans un parcours en profondeur, on descend le plus profondément possible dans

l’arbre puis, une fois qu’une feuille a été atteinte, on remonte pour explorer les

autres branches en commençant par la branche « la plus basse » parmi celles

non encore parcourues.

❖ Le parcours en profondeur peut se faire en :

❖Préordre (Préfixe) : où on affiche la racine avant ses fils,

❖Postordre(Postfixe) : où on affiche les fils avant leur racine.

❖Inordre (Infixe) : où, dans le cas d’un arbre binaire, on affiche le fils gauche avant21sa
racine et son frère droit,
PARTIE II:
ARBRES BINAIRES DE RECHERCHE
(ABR)
PLAN DE LA PARTIE II
❑ Définitions

❑ Parcours

❑ Opérations de Base: Recherche, Insertion et Suppression

23
II. DÉFINITION
❖Un Arbre Binaire est un arbre de degré 2, c’est-à-dire que chaque nœuds a au plus

deux fils. Ainsi, le premier fils d'un nœud est appelé Fils-Gauche (FG) et le deuxième

fils est appelé Fils-Droit (FD).

24
II. DÉFINITION
❖ Un Arbre Binaire de Recherche (ABR) est un arbre binaire ordonné tel
que pour tout nœud « i »:

Toutes les valeurs du sous arbre gauche de « i » sont strictement


inférieures à la valeur de « i », et

Toutes les valeurs du sous-arbre droit de « i » sont supérieures ou égales à


la valeur de « i ».

25
II. PARCOURS PREORDRE
❖Le parcours préordre d’un arbre binaire R consiste à visiter le nœud racine (R)

ensuite parcourir récursivement en préordre les sous arbres T1 (sous arbre

gauche) puis T2 (sous arbre droit) ce qui donne : [ R , T1 , T2 ou RGD]

T1 T2

26

Sous arbre gauche G Sous arbre droit D


II. PARCOURS PREORDRE
❖ Le parcours préordre d’un arbre binaire R consiste à visiter le nœud racine (R)

ensuite parcourir récursivement en préordre les sous arbres T1 (sous arbre

gauche) puis T2 (sous arbre droit) ce qui donne : [ R , T1 , T2 ou RGD]

Résultat de parcours:

8, 3, 1, 6, 4, 7, 10, 14, 13

27
II. PARCOURS INORDRE
❖ Le parcours inordre d’un arbre binaire R consiste d'abord à parcourir

récursivement en inordre le sous arbre gauche T1, puis visiter le nœud racine

(R) ensuite parcourir récursivement en inordre le sous arbre droit T2 ce qui

donne [ T1 , R , T2 ou GRD ]
R

T1 T2

28

Sous arbre gauche G Sous arbre droit D


II. PARCOURS INORDRE
❖ Le parcours inordre d’un arbre binaire R consiste d'abord à parcourir

récursivement en inordre le sous arbre gauche T1, puis visiter le nœud racine

(R) ensuite parcourir récursivement en inordre le sous arbre droit T2 ce qui

donne [ T1 , R , T2 ou GRD ]

Résultat de parcours:
1, 3, 4, 6, 7, 8, 10, 13, 14

❖ Propriété: Le parcours inordre d’un ABR 29

visite les nœuds par ordre croissant des clés.


II. PARCOURS POSTORDRE
❖ Le parcours postordre d’un arbre binaire R consiste d'abord à parcourir

récursivement en postordre les sous arbres T1 puis T2 ensuite visiter le nœud

racine (R) ce qui donne [ T1 , T2 , R ou GDR]

T1 T2

30

Sous arbre gauche G Sous arbre droit D


II. PARCOURS POSTORDRE
❖ Le parcours postordre d’un arbre binaire R consiste d'abord à parcourir

récursivement en postordre les sous arbres T1 puis T2 ensuite visiter le nœud

racine (R) ce qui donne [ T1 , T2 , R ou GDR]

Résultat de parcours:
1, 4, 7, 6, 3, 13, 14, 10, 8

31
II. PARCOURS EN LARGEUR
❖ Dans le parcours par niveau, tous les nœuds d’un même niveau sont traités

avant de descendre au niveau suivant

Résultat de parcours: 8, 3, 10, 1, 6, 14, 4, 7, 13 32


II. OPÉRATION DE RECHERCHE
❖ La recherche d'un nœud ayant une clé particulière « x » se fait de manière
récursive:
Si l’arbre est vide: échec

✔ Recherche négative: la clé n’appartient pas à l’arbre, l’algorithme se termine.

Sinon: comparer la clé « x » avec la clé de la racine.

S’il y a égalité alors la clé « x » est trouvée.

✔ Recherche positive: l’algorithme se termine.

Si la clé « x » est strictement inférieure, alors la recherche est poursuivie dans le sous
arbre gauche.

Si la clé « x » est strictement supérieure, alors la recherche est poursuivie dans le sous
33
arbre droit.
II. OPÉRATION DE RECHERCHE
❖ La recherche est dichotomique, à chaque étape, un sous arbre est éliminé:

Rechercher (55)

Rechercher (FD(20))
55 ?

Rechercher (FG(59)) 20

15 59
Rechercher (FD(27))

5 27 71
Rechercher (FD (33))

Élément trouvé 3 10 33

55
8 34

52
II. OPÉRATION D’INSERTION
❖ L'insertion d'une clé « x » se fait toujours au niveau d'une feuille. Cette

insertion dans un ABR doit maintenir la propriété d’ordre des arbres de

recherche, ainsi:

1. Rechercher la position d’insertion

2. Raccorder le nouveau nœud à son parent

35
II. OPÉRATION D’INSERTION
+ 25

20

15 59

RechercherPosition (25) 5 27 71

Rechercher (FD(20)) 3 33
10 25

Rechercher (FG(59)) 55
8
Position trouvé pour l’insertion, le père est le nœud 27
52

Insérer 25 au niveau de la feuille dont le père est 27

36
II. OPÉRATION DE SUPPRESSION
❖ La suppression d’une clé « x » passe par deux étapes:

1. Rechercher d’abord le nœud qui contient la clé « x »; soit « i » ce nœud

2. Supprimer le nœud « i » tout en maintenant la propriété de l’ordre de

l’ABR. Ainsi, on peut se trouver dans une des situations suivantes :

37
II. OPÉRATION DE SUPPRESSION
❖ Cas 1: Suppression d'une feuille

Il suffit de l'enlever de l'arbre vu qu'elle n'a pas de fils.

Exemple: supprimer le nœud i qui contient la valeur 8

1. Rechercher(8) 20

2. Libérer le nœud « i » 15 59

5 27 71

3 10 33

«i» 12 55
8 38

52
II. OPÉRATION DE SUPPRESSION
❖ Cas 2: Suppression d'un nœud avec un fils

Il suffit de l'enlever de l'arbre en liant son père avec son fils.

Exemple: supprimer le nœud « i » qui contient la valeur 10

1. Rechercher(10) 20

2. Chainer le père de i avec le FD(i) 15 59

3. Libérer le nœud « i » 5 27 71

3 10 33
«i»

12 55 39

52
II. OPÉRATION DE SUPPRESSION
❖ Cas 2: Suppression d'un nœud avec un fils

Il suffit de l'enlever de l'arbre en liant son père avec son fils.

Exemple: supprimer le nœud i qui contient la valeur 27


20
1. Rechercher(27)
15 59
2. Chainer le père de i avec le FG(i)

3. Libérer le nœud « i » 5 «i» 27 71

3 10 33

55 40
8

52
II. OPÉRATION DE SUPPRESSION
❖ Cas 3: Suppression d'un nœud avec deux fils

Etape 1: On échange le nœud à supprimer avec son successeur le plus proche (le

nœud le plus à gauche du sous-arbre droit) ou son plus proche prédécesseur (le nœud

le plus à droite du sous-arbre gauche). Cela permet de garder la propriété d’ordre d‘ABR.

34

22 66

8 29 50 71

Le plus proche 56 70 81
17 25 prédécesseur
55 69 41
9 23 32
Le plus proche
successeur
II. OPÉRATION DE SUPPRESSION
❖ Cas 3: Suppression d'un nœud avec deux fils
Etape 1 🡪 Cas A: On échange le nœud à supprimer avec son successeur le plus
proche (le nœud le plus à gauche ou le plus petit du sous arbre droit)

▪ Racine: 71

▪ La plus petite valeur : 69

34

22 66

8 29 50 71

17 25 56 70 81
42

9 23 32 55 69
II. OPÉRATION DE SUPPRESSION
❖ Cas 3: Suppression d'un nœud avec deux fils
Etape 2: on applique à nouveau la procédure de suppression qui est maintenant une
feuille ou un nœud avec un seul fils.

Ainsi, si on choisit d’échanger le nœud « 66 » avec son plus proche successeur « 69 », on


obtient
34

22 66
69

8 29 50 71

17 25 56 70 81

9 23 32 55 69
43
II. OPÉRATION DE SUPPRESSION
❖ Cas 3: Suppression d'un nœud avec deux fils
Etape 1 🡪 Cas B: On échange le nœud à supprimer avec son plus proche
prédécesseur (le nœud le plus à droite ou le plus grand du sous-arbre gauche).

▪ Racine: 50

▪ La plus grande valeur : 56

34

22 66

8 29 50 71

17 25 56 70 81
44

9 23 32 55 69
II. OPÉRATION DE SUPPRESSION
❖ Cas 3: Suppression d'un nœud avec deux fils
Puis on applique à nouveau la procédure de suppression qui est maintenant une feuille ou
un nœud avec un seul fils.

Ainsi, si on choisit d’ échanger le nœud « 66 » avec son plus proche prédécesseur « 56 », on


obtient
34

22 66
56

8 29 50 71

56 70 81
17 25
55 69
9 23 32
45
II. OPÉRATION DE SUPPRESSION
❖ En conclusion, pour supprimer le nœud « i » d’un ARB, on rencontre une des
situations suivantes :

Cas FG (i) FD (i) Action


Feuille Nil Nil Libérer le nœud « i »
Avec un Nil ≠Nil Chaîner le père au fils de « i » (FG(i) ou FD(i))
fils ≠Nil Nil ensuite libérer le nœud « i »
1. Rechercher le plus proche prédécesseur ou
Avec deux successeur de « i », soit « P ».
≠Nil ≠Nil
fils 2. Remplacer Info(i) par Info(P)
3. Supprimer le nœud « P » 46
PARTIE III:
ARBRES BINAIRES ÉQUILIBRÉS
PLAN DE LA PARTIE III
❑ AVL
❑ Introduction

❑ Définition
❑ Techniques d’équilibrage
❑ Opérations de Base: Recherche, Insertion et Suppression

❑ TAS
❑ Définition
❑ Opérations de Base: Insertion, Recherche et Suppression
48
❑ Implémentation
III. AVL: INTRODUCTION
❖ Intérêt des ABR équilibrés est de diminuer la complexité temporelle des
opérations de la recherche, de l’insertion et de la suppression dans un ABR
quelconque.
Filiforme
ABR Equilibré

87 ?

49
Nombre maximum de nœuds parcourus Nombre maximum de nœuds parcourus
≈ log2(n) =n
III. AVL: DÉFINITION
❖ Les arbres AVL ont été introduits par les finlandais Adelson- Velskii et
Landis dans les années 60.

❖ Un arbre AVL est un ABR équilibré dont:

la différence de hauteur (ou profondeur) entre le sous-arbre gauche et le


sous-arbre droit d'un nœud « R » diffère d'au plus 1.

|Profondeur(FG(R) ) – Profondeur(FD(R)) | ≤ 1

les sous arbres gauches et droits d'un nœud sont des arbres AVL.

❖ Un champs supplémentaire est ajouté à tous les nœuds: c’est le facteur de


déséquilibre (appelé aussi facteur de balance) qui est calculé après chaque
50

insertion/suppression.
III. AVL: DÉFINITION
❖ Exemple: soit l’ABR suivant. Est-il un arbre AVL?
Rappelons:
▪que l’arbre vide a la 2 – 1 = +1 100
hauteur −1,
1 – 0 = +1 0 – (-1) = +1
▪Et qu’une feuille est 50 200

un arbre de hauteur 0–0=0 0 -1 – (-1) = 0


30 80 150
0.
▪L’arbre vide et 0 0
10 40
l’arbre réduit à une
À vérifier pour chaque nœud R, on a:
feuille, sont des 51
| Profondeur(FG(R) ) – Profondeur(FD(R)) | <= 1
arbres AVL Cet arbre est un arbre AVL
III. AVL: DÉFINITION
❖ Exemple: Cet ABR est un arbre AVL avant insertion
Insérer la valeur 5
100

Après insertion, recalculer le facteur 2 – 0 = +2 50 200


de déséquilibre des nœuds
+1 30 80 150
ascendants.

+1 10 40

05
Cet arbre n’est pas un arbre AVL après insertion de 5 52

🡪 arbre déséquilibré
III. AVL: TECHNIQUES D’ÉQUILIBRAGE
❖ L’opération d’équilibrage, appelée rotation, s’applique à tous les ABR dans le

but de pouvoir les rééquilibrer:

On opère donc une rotation gauche lorsque l’arbre est «déséquilibré à

droite», i.e. son sous-arbre droit est plus haut que son sous-arbre gauche.

On opère une rotation droite dans le cas contraire à savoir son

sous-arbre gauche est plus haut que son sous-arbre droit.

❖ Les rotations préservent l’ordre des données d’un ABR (parcours inordre).
53
III. AVL: TECHNIQUES D’ÉQUILIBRAGE
❖ Rotation simple : Rotation droite

Soit A=(B, R, Z) un ABR tel que B=(X, P, Y).

La rotation droite est l’opération:

((X, P, Y), R, Z) → (X, P, (Y, R, Z))


+2
0 ou -1
R P
Rotation droite
+1 ou 0 P 0 ou 1
R

Z
(hauteur
h/h-1)
X
Y (hauteur
h+1/h)
X (hauteur
h/h)
Y Z
(hauteur (hauteur (hauteur 54
h+1/h) h/h) h/h-1)

Déséquilibre gauche
III. AVL: TECHNIQUES D’ÉQUILIBRAGE
❖ Rotation simple : Rotation gauche

Soit A=(X, R, B) un ABR tel que B=(Y, P, Z).

La rotation gauche est l’opération:

( X, R, (Y, P, Z)) → ((X, R, Y), P, Z)


-2 Rotation gauche 0 ou +1
R P

-1 ou 0 0 ou -1 R
P

X
(hauteur
h/h-1) Z
Y (hauteur
(hauteur Z X Y h+1/h)
h) (hauteur (hauteur h)
(hauteur h/h-1)
h+1/h) 55

Déséquilibre droit
III. AVL: TECHNIQUES D’ÉQUILIBRAGE
❖ Rotation double : gauche-droite

C’est une rotation gauche sur le sous arbre-gauche du nœud R suivie d’une
rotation droite sur le nœud R
Rotation gauche Rotation droite
+2 R R Q
+2 0
-1 P Q P R

D D
Q (h) P (h)

A A
(h) C B C D
(h) (h)

A B
B C (h)

56

((A, P, (B, Q, C)), R, D) → (((A, P, B), Q, C), R, D) → ((A, P, B), Q, (C, R, D))
III. AVL: TECHNIQUES D’ÉQUILIBRAGE
❖ Rotation double : droite-gauche

C’est une rotation droite sur le sous arbre-droit du nœud R suivie d’une
rotation gauche sur le nœud R
Rotation droite Rotation gauche
-2 R R
Q
-2
0
P Q
A R P
+1
A (h)
(h) Q P
D B
(h)
A B C D
(h) (h)
B C C D
(h)

57

(A, R, ((B, Q, C), P, D)) → (A, R, (B, Q, (C, P, D))) → ((A, R, B), Q, (C, P, D))
III. AVL: TECHNIQUES D’ÉQUILIBRAGE
❖ En résumé, il y a 4 types de rotation

Bal (R) = +2 ; Bal (P) = 0 / +1 ;


À droite
P = FG(R)
Simple
Bal (R) = -2 ; Bal (P) = 0 / -1 ;
À gauche
Rotation

P = FD(R)

Gauche Bal (R) = 2 ; Bal (P) = -1 ;


droite P = FG(R); Q = FD(P)
Double
Droite Bal (R) = -2 ; Bal (P) = +1 ;
Gauche P = FD(R); Q = FG(P) 58
III. AVL: OPERATIONS DE BASE
❖ La recherche est identique à celui des ABR car les arbres AVL sont avant tout

des ABR équilibrés.

❖ L’insertion d’un élément dans un arbre AVL peut provoquer un déséquilibre.

Donc, pour rétablir l’équilibre (rééquilibrer) de l’arbre après une insertion, une

seule rotation (simple ou double) suffit.

❖ La suppression d’un élément dans un arbre AVL peut provoquer un

déséquilibre. Donc pour rétablir l’équilibre (rééquilibrer) de l’arbre après une

suppression, il faut faire entre 1 et h rotations (h est la hauteur de l’arbre). 59


III. AVL: INSERTION
❖ L’ajout d’un nœud se fait toujours au niveau d’une feuille, puis on rééquilibre

l’arbre AVL si l’insertion a déséquilibré l’arbre.

❖ Le déséquilibre est rencontré lorsque le facteur d’équilibrage d’un nœud de

l’arbre égale à ± 2.

60
III. AVL: INSERTION
❖ Exemple: soit la série de nombres à insérer dans un arbre AVL

(2 10 12 4 16 8 6 14 9 1 7)

2 10 12 4 16 8 6 14 2 10 12 4 16 8 6 14
0 R -2
2 2

-1
P 1
2 10 12 4 16 8 6 14 0
Rotation simple à gauche
2 -1 1 0

2
P
1 0 1
0 0 61
R 1
2
2
III. AVL: INSERTION
❖ Exemple: soit la série de nombres à insérer dans un arbre AVL

2 10 12 4 16 8 6 14 2 10 12 4 16 8 6 14
1
1 1 0

0 0

2 -1 1 2 1 -1

2 2

4 0 4 1 0

6
62
III. AVL: INSERTION
❖ Exemple: soit la série de nombres à insérer dans un arbre

2 10 12 4 16 8 6 14 9 1 7

1
0 1
P 0
R 2 -2 1
2 Rotation 4 1
simple 2
-1
1
À gauche
P 4
6 R 2 8 1
6
63
8 0
III. AVL: INSERTION
❖ Exemple: soit la série de nombres à insérer dans un arbre AVL

2 10 12 4 16 8 6 14 9 1 7

1
1
0

4 -1 1
2

2 8 1 1
6

64
6 0
III. AVL: INSERTION
❖ Exemple: soit la série de nombres à insérer dans un arbre AVL

2 10 12 4 16 8 6 14 9 1 7

1 1
0 Q
0 R

1 -2 4 1 0
4 Rotation 4
2
double R P
P
Droite
2 8 1 1 2 8 1 1
gauche 2 6
6
Q
6 1 0 6 65
4
III. AVL: INSERTION
❖ Exemple: soit la série de nombres à insérer dans un arbre AVL

2 10 12 4 16 8 6 14 9 1 7

2
10
10
4 -1 14
4 14 Insertion
du 7 1
2 8 1 12 16
2 8 12 16
0
1 6 -1 9 0

1 6 9

7 66
0

Nœud inséré
III. AVL: INSERTION
❖ Exemple: soit la série de nombres à insérer dans un arbre AVL

2 10 12 4 16 8 6 14 9 1 7

R
Q
2
10 8
P
4 -1 14 R
P
Rotation
Q 4 10
double
1
2 8 1 12 16
Gauche
droite 14
2 6 9
0
1 6 -1 9 0

12 16 67
1 7
7
0 Nœud inséré
III. AVL: INSERTION
Après insertion à gauche Avant Après insertion à droite
+1 R 0 R -1 R

h+1 h h h h h+1

+2 Cas A +1 R 0 R
R

h h+1 h h+1 h+1


h+2

-1 R -2 Cas B
0 R R

h h+1 h h+2
h+1 h+1 68
III. AVL: INSERTION
❖ Remarques:

Après une insertion, seules les nœuds ascendants (qui sont sur le chemin

du point d’insertion à la racine) sont susceptibles d’être déséquilibrés.

Cas A: L’arbre devient non équilibré quand le nouveau nœud inséré est un

descendant gauche d’un nœud qui avait un facteur d’équilibrage égal à 1

Cas B: L’arbre devient non équilibré quand le nouveau nœud inséré est un

descendant droit d’un nœud qui avait un facteur d’équilibrage égal à -1


69
+2 R Cas A
III. AVL: INSERTION
h+2 h

Avant
+1 R

0 P
h

+2 R h h +2 R

+1 P -1 P
h h

h+1 h h h+1

Si insertion dans le sous-arbre gauche du Si insertion dans le sous-arbre droit du fils


fils gauche alors Rotation Simple à gauche alors Rotation Double
70
droite Gauche-Droite
-2 Cas B
R
III. AVL: INSERTION
Avant
h h+2 -1 R

0 P
h

h h

-2 R -2 R

+1 P -1 P
h h

h+1 h h h

Si insertion dans le sous-arbre gauche du Si insertion dans le sous-arbre droit du


fils droit alors Rotation Double fils droit alors Rotation Simple
71 à
Droite-Gauche gauche
III. AVL: SUPPRESSION
❖ Le principe de la suppression d’un élément dans un arbre AVL est le même

que dans un ABR, c.à.d. recherche de l’élément à supprimer, suppression et

remplacement, le cas échéant, par l’élément qui lui immédiatement inférieur

ou supérieur.

❖ Après la première phase de la suppression, la hauteur de l’arbre est diminué

de 1. Le problème est que cet arbre n’est plus forcément un arbre AVL. Il faut

donc le rééquilibrer.

72
III. AVL: SUPPRESSION
❖ S’il y a déséquilibre, la rotation appliquée peut diminuer à son tour la hauteur

de l’arbre et générer un nouveau déséquilibre. En fait les rotations peuvent

s’enchainer en cascade depuis l’élément supprimé jusqu’à la racine. Ainsi, on

peut faire jusqu’à h (hauteur de l’arbre initial) rotations (simple ou double).

73
III. AVL: SUPPRESSION
❖ Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 10:

Remplacer par
0 0
8 le successeur 8

0 -1 -1
4 10 4 12

-1
1 14 0
14
2 6 -1 9 0
2 6 9

0
1 12 16 0
1 16
7 0 0 7
74
III. AVL: SUPPRESSION
❖ Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 10:

Remplacer par
0
8 le prédécesseur 8
R
-1 – 1 = -2 !!!!!
4
0 -1 4 9
10

P 14 0
1 14 0
2 6
2 6 -1 9 0

12 16 1 12 16
0
1 7 0 0
0 7

75
III. AVL: SUPPRESSION
❖ Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 10:

2–2=0
8 8
RSG
R
4 9
-1 – 1 = -2 !!!!! 4 14

P 14 0
9 16
2 6 2 6

12 16 1 7 12
1 7

76
III. AVL: SUPPRESSION
❖ Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 8:

Remplacer par
0
8 le successeur 9

0 -1 -2
4 12 4 12

1 14 -1
14 -1
2 6 -1 9 0
2 6

0
1 16 0
1 16
7 0
7
77
III. AVL: SUPPRESSION
❖ Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 8:

9 9
RSG
0
4 -2 4 14
12

14 -1
2 6 12 16
2 6

1 16 1 7
7
78
III. AVL: SUPPRESSION
❖ Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 12
puis 16:

1
9 9
+2

0 0 0
4 14 4 14

0 0
1
2 6 -1 12 16
2 6

0
1 7 0
1 7
79
III. AVL: SUPPRESSION
❖ Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 12
puis 16:

+2
9 -1
4
RSD
0
4 14 2 9

2 6 1 6 14

1 7 7

80
III. AVL: SUPPRESSION
❖ Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 30:

Cas a: remplacement par le successeur (40)


-1
50 50

+1
Remplacer par +2
30 100
+1
le successeur 40 100

0
-1
-1
10 40 80 +1 200 -1
10 80 200

0 0
0
20 70 90 300 0
20 70 90 300
+1

60 81
60 0
III. AVL: SUPPRESSION
❖ Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 30:

Cas a: remplacement par le successeur (40)

50 -2
50
+2 RDG-D
40 100 +1
20 100

-1
10 80 200
10 40 80 +1 200
0

20 70 90 300
70 90 300

60 82
60
III. AVL: SUPPRESSION
❖ Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 30:

Cas a: remplacement par le successeur (40)

-2 0
50 80
RDD-G
+1
20 100 50 100

10 40 80 +1 200 20 70 90 200

70 90 300 10 40 60 300

83
60
III. AVL: SUPPRESSION
❖ Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 30:

Cas a: remplacement par le prédécesseur (20)


R 1 – 3 = -2
-1 50
50
P
+1
+1 +1
Remplacer par 20 100
30 100 le prédécesseur

0
-1 10 40 80 +1 200
-1
10 40 80 +1 200 Q

0 0 70 90 300
20 70 90 300 0
+1

60
84
60 0
III. AVL: SUPPRESSION
❖ Exemple: soit l’arbre suivant. Donner le résultat après la suppression de 30:

Cas a: remplacement par le prédécesseur (20)

R 1 – 3 = -2
50 0
80
P
RDD-G
+1
20 100 50 100

10 40 80 +1 200
Q 20 70 90 200

70 90 300
10 40 60 300

85
60
PLAN DE LA PARTIE III
❑ AVL

❑ TAS

❑ Définition
❑ Opérations de Base: Insertion, Recherche et Suppression
❑ Implémentation

86
III.TAS: DÉFINITION
❖ Un TAS (HEAP) inventé par Williams Floyd en 1964, est un arbre binaire qui
vérifie les deux propriétés suivantes :

Propriété structurelle: arbre binaire parfait, i.e. Tous les niveaux sont
totalement remplis sauf le dernier qui est rempli de la gauche vers la
droite.

Propriété d’ordre :

▪ TASmin: Clé (père) ≤ Clé(fils)

▪ TASmax: Clé (père) ≥ Clé (fils)


87
III.TAS: DÉFINITION
❖ Exemple d’un TASmin

Clé (père) ≤ Clè (fils)

Le minimum se trouve toujours à la racine

4 Minimum

5 6

15 9 7 20

16 25 14 12 11 8 88

Maximum
III.TAS: DÉFINITION
❖ Exemple d’un TASmax

Clé (père) ≥ Clè (fils)

Le maximum se trouve toujours à la racine

40 Maximum

35 26

15 19 17 20

89
1 13 14 12 11 8

Minimum
III.TAS: INSERTION
❖ Pour insérer une valeur « v » dans un TASmin [ou TASmax]

1. Insérer la valeur « v » à la fin du dernier niveau de l’arbre (à droite).

2. Tant que la valeur du père de « v » est plus grande [petite] que « v »,

échanger la valeur du père de v avec « v ».

❖ L’étape 1 permet de vérifier la propriété structurelle et l’étape 2 permet de

vérifier la propriété de l’ordre.

90
III.TAS: INSERTION
❖ Exemple: Soit le TASmin suivant. Donner le résultat après l’insertion 5, 17, 3,
18

6
9

15 10 7 20

16 25 14 12 11 8

91
III.TAS: INSERTION
❖ Exemple: Soit le TASmin suivant.

Insertion 5

6
9

15 10 7 20

16 25 14 12 11 8 5

92
III.TAS: INSERTION
❖ Exemple: Soit le TASmin suivant.

❖ Insertion 17

5
9

15 10 7 6

16 25 14 12 11 8 20 17

93
III.TAS: INSERTION
❖ Exemple: Soit le TASmin suivant.

❖ Insertion 3

5
9

15 10 7 6

16 25 14 12 11 8 20 17

94
3
III.TAS: INSERTION
❖ Exemple: Soit le TASmin suivant.

❖ Insertion 18

5
4

9 10 7 6

15 25 14 12 11 8 20 17

95
16 18
III.TAS: RECHERCHE
❖ Pour rechercher une valeur « v » dans un TAS min [ou TASmax], on doit

parcourir l’arbre en largeur (niveau par niveau)

On passera au niveau « i » si seulement si la valeur « v » est supérieure

[inférieure] à la valeur de l’un des nœuds de niveau « i-1 ».

96
III.TAS: RECHERCHE
❖ Exemple: Soit le TASmin suivant.

7?

6
9

15 10 7 20

16 25 14 12 11 8

97
La valeur existe, fin de recherche
III.TAS: RECHERCHE
❖ Exemple: Soit le TASmin suivant.

8?

6
9

15 10 7 20

16 25 14 12 11 8

98
La valeur existe, fin de recherche
III.TAS: RECHERCHE
❖ Exemple: Soit le TASmin suivant.

3?

6
9

15 10 7 20

16 25 14 12 11 8

99
La valeur n’existe pas , fin de recherche
III.TAS: RECHERCHE
❖ Exemple: Soit le TASmin suivant.

30 ?

6
9

15 10 7 20

16 25 14 12 11 8

100
Fin de recherche, la valeur n’existe pas
III.TAS: SUPPRESSION
❖ Pour supprimer une valeur « v » dans un TASmin [ou TASmax]

1. Rechercher la valeur « v », si elle existe on passe à l’étape suivante, sinon


stop.

2. Soit « P » le nœud contenant la valeur « v », remplacer la valeur de « P »


par la valeur du dernier nœud du dernier niveau (soit « Q » ce nœud et « x
» sa valeur). Cela permet de vérifier la propriété structurelle.

101
III.TAS: SUPPRESSION
❖ Pour supprimer une valeur « v » dans un TASmin [ou TASmax]

3. Vérifier la propriété d’ordre:

a. Tant que la valeur « x » est inférieure [supérieure] à celle du père,

échanger la valeur « x » avec celle du père.

b. Tant que la valeur « x » est supérieure [inférieure] à celle de l’un de

ses fils, échanger la valeur « x » avec celle du plus petit [grand] de ses

fils.
102
III.TAS: SUPPRESSION
❖ Exemple: Soit le TASmin suivant. Donner le résultat après la suppression de
9, 16, 6 et 4.

6
9

15 10 7 20

16 25 14 12 11 8

103
III.TAS: SUPPRESSION
❖ Exemple: Soit le TASmin suivant.

Suppression de 9.

6
9

15 10 7 20

16 25 14 12 11 8

104
III.TAS: SUPPRESSION
❖ Exemple: Soit le TASmin suivant.

Suppression de 9, 16.

6
8

15 10 7 20

16 25 14 12 11

105
III.TAS: SUPPRESSION
❖ Exemple: Soit le TASmin suivant.

Suppression de 16.

6
8

15 10 7 20

11 25 14 12

106
III.TAS: SUPPRESSION
❖ Exemple: Soit le TASmin suivant.

Suppression de 6.

6
8

11 10 7 20

15 25 14 12

107
III.TAS: SUPPRESSION
❖ Exemple: Soit le TASmin suivant.

Suppression de 6.

12
8

11 10 7 20

15 25 14

108
III.TAS: SUPPRESSION
❖ Exemple: Soit le TASmin suivant.

Suppression de 4.

7
8

11 10 12 20

15 25 14

109
III.TAS: SUPPRESSION
❖ Exemple: Soit le TASmin suivant.

Suppression de 4.

14

7
8

11 10 12 20

15 25

110
III.TAS: SUPPRESSION
❖ Exemple: Soit le TASmin suivant.

Suppression de 4.

12
8

11 10 14 20

15 25

111
III.TAS: IMPLÉMENTATION
❖ Un TAS se représente naturellement par un tableau:

Les sommets sont numérotés par un parcours en largeur, de gauche à


droite.
Le sommet « i » est rangé dans la case d’indice i du tableau.

1 4
2 3
6
5
4 5 6 7

15 9 7 20
8 9
16 25 14 12 11 8
10 11 12 13
112

1 2 3 4 5 6 7 8 9 10 11 12 13
4 5 6 15 9 7 20 16 25 14 12 11 8
III.TAS: IMPLÉMENTATION
❖ On parle ici de la représentation statique séquentielle d’un arbre binaire
La case 0 est vide

Indice(racine)=1

Indice(FG)=2*Indice(Père)

Indice(FD)=2*Indice(Père)+1

Indice(Père)= [Indice (Fils)/2]

0 1 2 3 4 5 6 7 8 9 10 11 12 13
?? 4 5 6 15 9 7 20 16 25 14 12 11 8
113
PARTIE IV:

ARBRES M-AIRE DE RECHERCHE (AMR)


PLAN DE LA PARTIE IV
❑ Définition

❑ Opérations de Base: Recherche, Insertion et Suppression

115
IV. DÉFINITION
❖ Un Arbre M-aire de Recherche (AMR) peut être défini comme une

généralisation de l‘Arbre Binaire de Recherche (ABR):

❑ au lieu d'avoir une clé et deux fils, on aura « m-1 » clés et « m » fils

pointeurs.

ABR AMR
Clé Clé 1 Clé 2 ……… Clé m-2 Clé m-1
Fils Gauche Fils Droit

Fils 1 Fils 2 Fils 3 Fils m-2 Fils m-1 Fils m

116
IV. DÉFINITION
❑ Si f1, f2, ... fm sont les « m » fils issus d'un nœud donné avec les clés k 1, k2,
....,km-1 dans l'ordre ascendant, alors :
Toutes les clés dans f1 sont inférieures à k1
Toutes les clés dans fj (j=2,3, ...m-1) sont supérieures à kj-1 et inférieures à kj
Toutes les clés dans fm sont supérieures km-1.

Ordre ascendant: k1 < k2 ....< km-1

f1 k1 f2 ….. kj-1 fj kj …... km-1 fm


(Clés du f1) < k1 (Clés du fm) > km-1
kj-1 < (Clés du fj) < kj
f11 k11 f12 k12 ....... f1(d-1) k1(m-1) f1m (j=2,3, ...m-1)
fm1 km1 fm2 km2 ....... fm(m-1) km(m-1) fmm
117

fj1 fj1 sj2 fj2 ....... fj(m-1) kj(d-1) fjm


IV. DÉFINITION
❖ Exemple: Soit l’AMR d’ordre 4 suivant

118
IV. RECHERCHE
❖ La recherche dans un AMR ressemble beaucoup à celle effectuée dans un ABR,

excepté qu’au lieu de prendre à chaque nœud une décision de branchement

binaire (Fils gauche ou droit), on prend une décision à options multiples, selon le

nombre de fils du nœud:

❖Soit R la racine. Supposant que chaque nœud contient entre autre, un tableau

de taille m-1 pour les clés et un tableau de taille m pour les pointeurs de fils. La

recherche d’une clé « x » se déroule comme suit:


119
IV. RECHERCHE
❖Soit R la racine. Supposant que chaque nœud contient, entre autre, un tableau
de taille m-1 pour les clés et un tableau de taille m pour les pointeurs de fils. La
recherche d’une clé « x » se déroule comme suit:
1. Dans le nœud R, rechercher la clé « x » dans le tableau des clés (en faisant
soit une recherche séquentielle soit une recherche dichotomique).
Si la clé existe, fin de recherche.
Sinon, retourner l’indice i tel que ki>x et passer à l’étape 2.
2. Soit Fi le fils correspond à l’indice i.
Si ce fils est à Nil alors la clé n’existe pas, fin de recherche.
Sinon, remplacer R par Fi et aller l’étape 1. 120
IV. RECHERCHE
❖ Exemple: Rechercher l’élément 68.

Nil i.e: L’élément n’existe pas


121
IV. INSERTION
❖Soit « x » une clé qui n’existe pas et soit « P » la racine de l’arbre.
❖ L’insertion de la clé « x » se déroule comme suit:
1. Si « P » est à Nil (l’arbre est vide) alors remplacer « P » par un nouveau
nœud contenant la clé « x », stop. Sinon,
2. Si « P » n’est pas plein (le nombre des clés insérés est strictement inférieur à
m-1) alors insérer la clé à sa bonne position dans « P » (décalage ou
déplacement des clés et/ou des fils), stop. Sinon
3. « P » est plein (le nombre des clés insérés est égale à m-1):
1. Rechercher le fils pouvant contenir la clé « x ». Soit « Fi » ce fils où x<ki
2. Si « Fi » est à Nil alors remplacer « Fi » par un nouveau nœud contenant la clé « x122»; stop
3. Sinon Remplacer « P » par « Fi » et recommencer de l’étape 2.
IV. INSERTION
❖ Exemple: Soit R un AMR d’ordre 4. Insérer les éléments suivants dans R: 1,
40, 68, 170.

1 6 10 37 40
170

68

123
IV. SUPPRESSION
❖ Technique similaire à celle des ABR:

1. Rechercher la clé à supprimer « x ». Si elle existe (soit « P » le nœud

trouvé) on passe à l’étape suivante, sinon on s’arrête.

2. On distingue trois cas:

a. Si la clé « x » n’a aucun sous arbre (i.e. les deux sous arbres gauche ou

droit sont vides)

b. Si la clé « x » a exactement un seul sous arbre (gauche ou droit) vide.


124
c. Si la clé « x » a les deux sous arbres non vides
IV. SUPPRESSION
❖ Technique similaire à celle des ABR:
a. Si la clé « x » n’a aucun sous arbre (i.e. les deux sous arbres gauche ou
droit sont vides) alors supprimer la clé, ensuite tasser (ou organiser) le
nœud (décalage ou déplacement des clés et/ou des fils).
▪ Exemple: supprimer 10, 37, 110 ou 150,

125
Si la clé à supprimer est la seule clé dans la feuille « P » alors libérer la feuille.
IV. SUPPRESSION
❖ Technique similaire à celle des ABR:
b. Si la clé « x » a un seul sous arbre vide alors supprimer la clé, ensuite
tasser (ou organiser) le nœud (décalage ou déplacement des clés et/ou des
fils).
▪ Exemple: la suppression du 120 entraîne le décalage de 150 à la position
de 120.

100 150

110
126
IV. SUPPRESSION
❖ Technique similaire à celle des ABR:
b. Si la clé « x » a un seul sous arbre vide alors supprimer la clé, ensuite
tasser (ou organiser) le nœud (décalage ou déplacement des clés et/ou des
fils).
▪ Exemple: supprimer 65, 62 et 69 de l’arbre ci dessous
1. la suppression du 65 entraîne le décalage
de 69 à la position de 65 ainsi le
déplacement du fils droit de 65.
2. la suppression du 62 entraîne le décalage
de 69 à la position de 62 ainsi le
69 62 69
déplacement du fils gauche de 69. 127
I
68 68 68
IV. SUPPRESSION
❖ Technique similaire à celle des ABR:
b. Si la clé « x » a un seul sous arbre vide alors supprimer la clé, ensuite
tasser (ou organiser) le nœud (décalage ou déplacement des clés et/ou des
fils).
▪ Exemple: supprimer 69 de l’arbre ci dessous
3. la suppression de 69 entraîne la
libération du nœud G et le chaînage du
nœud I avec D.

69 128

Si la clé est la seule dans le nœud « P » alors


chainer le fils « P » à son père. 68
IV. SUPPRESSION
❖ Technique similaire à celle des ABR:
c. Si la clé « x » a les deux sous arbres non vides alors remplacer cette clé
par son successeur/prédécesseur le plus proche (soit la clé « y »), ensuite
supprimer la clé « y » (aller au cas a ou b).
▪ Exemple: la suppression du 85 entraîne le remplacement du 85 par 100 ,
ensuite la suppression du 100

12 50 100

120 150
129

110
PARTIE V:
B-ARBRES: AMR EQUILIBRÉS
PLAN DE LA PARTIE V
❑ Introduction

❑ Définition

❑ Opérations de Base: Insertion et Suppression

131
V. INTRODUCTION
❖ Les principaux problèmes avec les AMR sont

❖Équilibrage après MAJ (insertion & suppression)

❖Gaspilla d’espace dû à la suppression

❖Bayer et McCreight (en 1970) ont fourni une solution à ces problèmes par

l'invention des B-arbres (B pour Bayer / Boeng / Balanced).

132
V. DÉFINITION
❖Un B-arbre d'ordre m (m est impair, i.e. m= 2*d +1, d≥1) est un AMR qui

vérifie les propriétés suivantes:

La racine, si elle n’est pas une feuille, a au moins 2 fils.

Tous les nœuds feuilles sont au même niveau (dernier niveau).

Chaque nœud contient k clés avec:

▪ 1≤k≤2*d (nœud racine)

▪ d≤k≤2*d (nœud non racine). Autrement dit, le taux de remplissage de


133
chaque nœud (non racine) est maintenu entre 50% et 100%.
V. INTRODUCTION
❖Les insertions et les suppressions deviennent simples à réaliser sauf dans deux

cas particuliers:

Insertion dans un nœud déjà plein (possédant 2*d clés, i.e. taux de

remplissage égale à 100%)

Suppression dans un nœud entraînant un taux de remplissage inférieur à

50%

134
V. INSERTION
❖ L’insertion se fait toujours au niveau des feuilles.

❖ Ainsi, l’insertion de la clé « x » se déroule comme suit:

1. Si l’arbre est vide, alors créer un nouveau nœud contenant « x ». Ce nœud

sera la nouvelle racine. Sinon,

2. Rechercher la feuille pouvant contenir « x », soit « P » la feuille trouvée.

3. Si le nœud « P » n’est pas plein alors insérer la clé à sa bonne position.

135
V. INSERTION
❖ Exemple: Considérons le B-arbre suivant d'ordre 3, insérer les valeurs
suivantes dans l’ordre : 55, 57, 95, 85, 87.

136
V. INSERTION
❖ Ainsi, l’insertion de la clé « x » se déroule comme suit:
4. Sinon (le nœud « P » est plein), l’éclatement se fait en cascade (approche
ascendante) comme suit
a. Classer les clés du nœud « P » ainsi que la clé « x » dans l’ordre croissant :
k1, k2, …km; soit kmil la clé du milieu ou la clé médiane
b. Laisser les d plus petites clés (k1 … kmil-1) dans le nœud « P »
c. Déplacer les d plus grandes clés (kmil+1 … km) dans un nouveau nœud (soit
« Q »)
d. Remonter la clé du milieu kmil dans le nœud père (soit « Pere ») de telle sorte
que le nœud « P » se trouvera à sa gauche et « Q » à sa droite.
e. Remplacer « P » par le nœud père « Pere ».
f. Si « P » est différent de Nil aller à 3 (application récursive de ce principe d’
éclatement, éventuellement jusqu’à arriver à la racine),
137
g. Sinon, créer un nouveau nœud contenant la clé du milieu k mil . Ce nœud sera
la nouvelle racine (fin de l’algorithme).
V. INSERTION
❖ Exemple: Considérons le B-arbre suivant d'ordre 3, insérer les valeurs
suivantes dans l’ordre : 55, 57, 95, 85, 87.

57 70 80

90 95 100

P
55 57 60

138

P Q
V. INSERTION
❖ Exemple: Considérons le B-arbre suivant d'ordre 3, insérer les valeurs
suivantes dans l’ordre : 55, 57, 95, 85, 87.

50 70 87

80 87 95

85 87 90

139
V. INSERTION
❖ Exemple: Construire un B-arbre d’ordre 5 à partir des valeurs suivantes:

20 15 10 35 19 13 5 3 12 7 16 40 25 38

+20, +15,
+10, +35, 10 15 20 35 19
+19
10, 15, 19, 20, 35 10 15 20 35

+13, +5, +3

19

5 10 13 15 20 35 140

3, 5, 10, 13, 15
V. INSERTION
❖ Exemple: Construire un B-arbre d’ordre 5 à partir des valeurs suivantes:

+12, +7,
+16, +40,
+25, +38 10 19

3 5 7 12 13 15 16 20 25 35 40 20, 25, 35, 38, 40

10 19 35

3 5 7 12 13 15 16 20 25 38 40

141
V. SUPPRESSION
❖La suppression dans un B-arbre est similaire à la suppression dans un AMR où
on distingue deux cas seulement:
Suppression d’une clé ayant aucun sous arbre (supression au niveau d’une feuille)
Suppression d’une clé ayant deux sous arbres non vide (remplacement par le
successeur/prédécesseur qui se trouve au niveau de feuille)
✔ Impossible de trouver dans un B-arbre un clé ayant un seul sous arbre (vu la
technique d’éclatement utilisée dans l’insertion)
❖ Il faut supprimer l’élément tout en préservant la qualité de B-arbre, c'est à
dire en gardant au moins d clés dans le nœud (non racine).
❖ Ainsi, si le nœud feuille (soit « P » ) qui contenait la clé à supprimer a moins
142
de d clés, alors l'action suivante est entreprise :
V. SUPPRESSION
Cas 1 (Emprunt): Si l'un des frères (gauche ou droit) contient plus de d clés,
alors la clé, soit Ks, dans le nœud père qui sépare entre les deux frères est
ajoutée au nœud « P » et le dernier (si frère gauche) ou le premier élément (si
frère droit) est ajoutée au père à la place de Ks.
▪ Exemple: Supprimer 25 du B-arbre d’ordre 5 suivant:

10 19 35

3 5 7 12 13 16 20 25 38 40 45

Emprunter une clé du frère


143
gauche ou droit
V. SUPPRESSION
▪ Exemple (cas 1): Supprimer 25 du B-arbre d’ordre 5 suivant:

10 19 35

3 5 7 12 13 16 20 25 38 40 45

Emprunter une clé


Emprunter une clé
du frère droit
du frère gauche
10 19 35
10 19 35
20 25 38 40 45
12 13 16 20 25

10 19 38
10 16 35 144
20 35 40 45
12 13 19 20
V. SUPPRESSION
Cas 2 (Fusion)-a: Si les deux frères contenaient exactement d clés, le nœud
« P » et l'un de ses frères seront concaténés ( fusionnés ou consolidés) en un seul
nœud qui contient aussi la clé séparatrice de leur père.
▪ Exemple (cas 2-a): Supprimer 35 du B-arbre d’ordre 5 suivant:

1. Remplacer par son prédécesseur (20) ou successeur (38)

10 16 35

3 7 12 13 19 20 38 40

2. i. Fusionner avec le frère 2. ii. Fusionner avec145


le frère
gauche ou droit gauche
V. SUPPRESSION
▪ Exemple (cas 2-a): Supprimer 35 du B-arbre d’ordre 5 suivant:

1. Remplacer par son prédécesseur

10 16 20

3 7 12 13 19 20 38 40

2. Fusionner avec le frère gauche

10 20
2. Fusionner avec le frère droit

3 7 12 13 16 19 38 40
10 16
146

3 7 12 13 19 20 38 40
V. SUPPRESSION
▪ Exemple (cas 2-a): Supprimer 35 du B-arbre d’ordre 5 suivant:

1. Remplacer par son successeur

10 16 38

3 7 12 13 19 20 38 40

2. Fusionner avec le frère gauche

10 16

147
3 7 12 13 19 20 38 40
V. SUPPRESSION
Cas 2 (Fusion)-b: Il est aussi possible que le père contient seulement d clés et
par conséquent il n'a pas de clé à donner. Dans ce cas, il peut emprunter de son
père et frère.
▪ Exemple : Supprimer 65 du B-arbre d’ordre 5 suivant:
Emprunter une clé
du frère droit
60 170

30 50 80 150 180 220 280

65 72 87 96 153 162 173 178 187 202

148
Fusionner avec le frère droit
🡪 Problème au niveau du père
V. SUPPRESSION
▪ Exemple (2-b): Supprimer 65 du B-arbre d’ordre 5 suivant:

60 170 Emprunter une clé du frère droit

30 50 80 150 180 220 280

65 72 87 96 153 162 173 178 187 202

Fusionner avec le frère droit

60 180

30 50 150 170 220 280


149

72 80 87 96 153 162 173 178 187 202


V. SUPPRESSION
Cas 2 (Fusion)-c: Il est aussi possible que les frères du père n'ont pas des clés
à donner, le père et son frère peuvent aussi être concaténés et une clé est prise
du grand père.
Exemple : Supprimer 173 du B-arbre d’ordre 5 suivant:

Soit 60 180 300 Soit 60 300


fusionner le fusionner le
180 300 père avec le père avec le
frère gauche 30 50 150 170 220 280 frère droit 150 180 220 280
30 50 60 150

153 162 173 178 153 162 170 178


153 162 170 178 150

Fusionner avec le frère droit


V. SUPPRESSION
Cas 2 (Fusion)-d: Dans le pire des cas, si tous les antécédents d'un nœud et
leurs frères contiennent exactement d clés, une clé sera prise de la racine (due
aux concaténations en cascades):
✔ Si la racine avait plus d'une clé, ceci termine le processus.
✔ Si la racine contenait une seule clé, elle sera utilisée dans la
concaténation. Le nœud racine est libéré et la profondeur de l'arbre est
réduit d'une unité.

151
V. SUPPRESSION
▪ Exemple (cas 2-d): Supprimer 38 du B-arbre d’ordre 3 suivant

20 A

1 2
B 15 38 C 40 C C

3 12 16 19 35 40 35 35 40
D E F G F G
F
A
3 4 B
20 A 15 20

B 15 C B 15 20 3 12 16 19 35 40
D E F
1. Remplacer par le successeur (40) 152 152
2. Fusionner F et G avec la clé de C
3. Fusionner C et B avec la clé de A
4. Supprimer le nœud A
V. SUPPRESSION
▪ Exemple (cas 2-d): Supprimer 38 du B-arbre d’ordre 3 suivant

20 A

1 2
B 15 38 C 35 C C

3 12 16 19 35 40 40 35 40
D E F G F G
F
A
3 4 B
20 A 15 20

B 15 C B 15 20 3 12 16 19 35 40
D E F
1. Remplacer par le prédécesseur (35) 153 153
2. Fusionner F et G avec la clé de C
3. Fusionner C et B avec la clé de A
4. Supprimer le nœud A
V. SUPPRESSION
▪ Exemple: Supprimer du B-arbre d’ordre 5 ci-dessous les valeurs suivantes:
5, 15, 25, 35, 13, 10 , 20, 40, 38, 12.

10 19 35

3 5 7 12 13 15 16 20 25 38 40

Emprunter une clé du frère


gauche

10 16 35

3 7 12 13 19 20 38 40 154 154
V. SUPPRESSION
▪ Exemple: Supprimer du B-arbre d’ordre 5 ci-dessous les valeurs suivantes:
5, 15, 25, 35, 13, 10 , 20, 40, 38, 12.
1. Remplacer par le
successeur 38

10 16 35

3 7 12 13 19 20 38 40

2. Fusionner avec le frère


gauche

10 16

3 7 12 13 19 20 38 40 155
V. SUPPRESSION
▪ Exemple: Supprimer du B-arbre d’ordre 5 ci-dessous les valeurs suivantes:
5, 15, 25, 35, 13, 10 , 20, 40, 38, 12.

10 16

3 7 12 13 19 20 38 40

Emprunter une clé du frère


droit

10 19

3 7 12 16 20 38 40
156
V. SUPPRESSION
▪ Exemple: Supprimer du B-arbre d’ordre 5 ci-dessous les valeurs suivantes:
5, 15, 25, 35, 13, 10, 20, 40, 38, 12.
1. Remplacer par le prédécesseur 7

10 19

3 7 12 16 20 38 40

2. Fusionner avec le frère droit

19

3 7 12 16 20 38 40 157 157
V. SUPPRESSION
▪ Exemple: Supprimer du B-arbre d’ordre 5 ci-dessous les valeurs suivantes:
5, 15, 25, 35, 13, 10, 20, 40, 38, 12.

19 19

3 7 12 16 20 38 40 3 7 12 16 38 40

Emprunt du frère gauche

Remplacer par le
16 12 prédécesseur 7

3 7 12 19 38 3 7 16 19

Emprunt du frère gauche


7
158 158

3 7 16 19 3 16 19
Fusionner avec le frère droit
SOURCES DE CE COURS
N. EL-ALLIA , Cours d’Algorithmique et Structures de données dynamiques, Ecole nationale
Supérieure d’Informatique (ESI), 2014.

Djamel Eddine ZEGOUR, Cours de Structures de Données, Ecole nationale Supérieure


d’Informatique (ESI), Disponible sur http://zegour.esi.dz/Cours/Cours_sdd.htm

W. K. Hidouci, Cours Structures De Données et Fichiers, École nationale Supérieure


d’Informatique, Disponible sur hidouci.esi.dz/algo/

A. Walid, Gestion des fichiers, Disponible sur https://slideplayer.fr/slide/9332040/

A. Aroussi, Cours d’ Algorithmique Avancée, Université de Blida 1, 2016, Disponible sur


https://sites.google.com/a/esi.dz/informatiqueblida/Algorithmique/annee-universitaire-2015-20
16
159

Vous aimerez peut-être aussi