Académique Documents
Professionnel Documents
Culture Documents
CHAPITRE V:
STRUCTURES
HIRARCHIQUES
Mme AROUSSI
2016-2017
Dfinitions et Terminologies
Les TAS 2
INTRODUCTION
Dans les tableaux, nous avons :
Un accs direct par indice (rapide)
chanage
manipulation.
4
INTRODUCTION
Leur usage est multiple, car il capte lide de hirarchie;
paragraphes,
Livre
C1 C2 C3
5
S2.1.1 S2.1.2
INTRODUCTION
Leur usage est multiple, car il capte lide de hirarchie;
Hirarchies de fichiers,
6
INTRODUCTION
Leur usage est multiple, car il capte lide de hirarchie;
Expressions Arithmtiques
-
Lexpression A - (B + C * (D - E)) * F
A *
se reprsente facilement par un arbre
+ F
o apparat clairement la priorit des
oprations: B *
C -
7
D E
TERMINOLOGIES
Un arbre est une structure de donnes (souvent dynamique)
reprsentant un ensemble de valeurs organises
hirarchiquement (non linaire). Chaque valeur est stocke dans
un nud. Les nuds sont connects entre eux par des artes
qui reprsentent des relations parent/fils.
Artes Nuds
A
B C D
E F G H I
8
J K L
TERMINOLOGIES
Racine: est le nud qui n'a
Racine
pas de prdcesseur (parent) et
A
possde zro ou plusieurs fils. La
Nud interne
racine constitue la caractristique B C D
d'un arbre.
Feuille : est un nud qui n'a E F G H I
externe. Feuilles
Nud interne : est tout nud
qui admet au moins un 9
successeur (fils).
TERMINOLOGIES
Fils dun nud : sont ses
successeurs. Dans l'exemple, F, G,
H, et I sont les fils du nud D.
Frres : sont les successeurs A
..
TERMINOLOGIES
Descendants dun nud :
sont tous les nuds du sous arbre
de racine nud. Dans l'exemple,
les descendants de D sont F, G, A
H, I, J, K et L.
B C D
Ascendants dun nud :
sont tous les nuds se trouvant E F G H I
sur la branche de la racine vers ce
nud. Dans l'exemple, les J K L
ascendants de J sont G, D et A.
Les ascendants de E sont B et A. 12
TERMINOLOGIES
Taille dun arbre: est le
nombre de nuds quil possde.
Taille de larbre ci contre = 12
Un arbre vide est de taille gale A
0.
B C D
Degr dun nud : est le
nombre de ses fils. Dans
E F G H I
l'exemple, le degr de B est 1, le
degr de D est 4. J L
K
Degr dun arbre : est le
degr maximum de ses nuds. 13
Niveaux Racine
0 ....... A
1 ........
B C D
2 E F
.........
G H I
14
3 ...........
J K L
TERMINOLOGIES
La profondeur d'un arbre (ou sa hauteur) : est le plus
grand niveau, c--d la distance entre la racine et la feuille la plus
lointaine. Dans l'exemple, la profondeur de l'arbre est gal 3
Niveaux Racine
0 ....... A
1 ........
B C D
2 E F
.........
G H I
15
3 ...........
J K L
TERMINOLOGIES
Fort : est un ensemble d'arbres.
B C D
E F H I
G L
J K
16
TERMINOLOGIES
Dfinition rcursive
Cas particulier: NIL est un arbre vide, contenant zro nud
T1
comme des fils n.
Chaque Ti est dfinit de la
mme manire (rcursivement).
T1, T2, ...Tm sont alors des 17
sous- arbres de n.
PARTIE II:
ARBRES BINAIRES
PLAN DE LA PARTIE II
Dfinition
Modle
Parcours
Reprsentation contige
Exemple dapplication 19
DFINITION
Un arbre binaire est un arbre o chaque nud est connect
deux sous-arbres (un sous-arbre gauche et un sous-arbre droit).
Donc, un arbre binaire est un arbre de degr 2, cest--dire que
chaque nuds a au plus deux fils. Ainsi, le premier fils d'un nud
n est appel Fils-Gauche (FG) et le deuxime fils est appel Fils-
Droit (FD). racine A
NIL
B F
C G K
D H I 20
J
DFINITION
Un arbre binaire est dit strictement binaire si chaque nud
interne (non feuille) a exactement 2 fils diffrents de NIL.
Si un arbre strictement binaire a n feuilles Alors :
le nombre total de ses nuds = 2n-1.
le nombre de ses nuds non feuilles (nuds internes) = n-1
A racine
Le nombre de feuilles : n=6
(C, D,H, M, J, K) B F
2n-1=11
Le nombre de nuds
H I
21
C D G K
22
DFINITION
Un arbre binaire complet est un arbre strictement binaire o
toutes les feuilles sont au mme niveau.
Dans lexemple ci dessous:
d=2
le nombre total de nuds n = 23-1 = 7
le nombre de nuds internes = 22-1 = 3
le nombre de feuilles = 22 = 4 racine A
C D G K
23
MODLE
L'arbre est implment souvent de manire dynamique
Structure de Donnes
TYPE Tnoeud = STRUCTURE
Info : Typeqq
FG : * Tnoeud
FD : * Tnoeud
FIN
VAR Arbre : * Tnoeud 24
MODLE
On dfinit le modle (machine abstraite) suivant dun arbre
binaire:
Fonction Rle
Info(p) permet d'accder l'information du nud p
T1 T2
29
T1 T2
30
B C
D E F G
H I 31
T1 T2
33
B C
D E F G
34
H I
Rsultat de parcours: HDIBEAFC G
PARCOURS INORDRE
La procdure (rcursive) qui affiche les valeurs en
parcours inordre dun arbre de racine R est :
T1 T2
36
B C
D E F G
H I
37
38
PARCOURS EN PROFONDEUR
On peut faire ces trois parcours sans utiliser la
rcursivit. Il faudra alors un moyen pour pouvoir remonter
dans les branches de l'arbre:
On pourra par exemple utiliser une structure de pile pour
sauvegarder les adresses des nuds par lesquels on est descendu et
les dpiler quand on en aura besoin pour remonter.
On peut aussi enrichir la structure des nuds en incluant un
pointeur vers le nud pre.
40
PARCOURS EN LARGEUR
Dans le parcours par niveau, tous les nuds dun mme
niveau sont traits avant de descendre au niveau suivant
A Rsultat de parcours:
ABCDEFGH I
B C
D E F G
H I
41
PARCOURS EN LARGEUR
Dans le parcours par niveau, tous les nuds dun mme
niveau sont traits avant de descendre au niveau suivant
Procdure parcours_largeur( R:* Tnoeud )
Var F:filedattente; P: *Tnoeud;
Debut
PR;
Si R NIL Alors
Enfiler(F,P);
TQ (Non FileVide(F))
Defiler(F,P);
crire(info(P));
Si FG(P) NIL Alors Enfiler(F,FG(P));
Si FD(P) NIL Alors Enfiler(F,FD(P)); 42
FTQ
Fin
EXERCICE 01
Ecrire des algorithmes itratifs pour dterminer dans un
arbre binaire contenant des entiers:
a. le nombre de nuds,
b. le nombre de feuilles,
c. le nombre des nuds internes
d. la profondeur.
e. la somme des contenus de tous les nuds,
f. le minimum des valeurs contenues.
g. le maximum des valeurs contenues
h. lexistence dun lment x 43
REPRSENTATION CONTIGE
On peut prsenter les arbres de manire statique en
utilisant les tableaux.
Reprsentation Standard:
Chaque lment du tableau possde quartes champs: un pour
l'information, un pour le fils gauche, un pour le fils droit et un champ
de type boolen pour indiquer si la case est libre ou occupe.
FIN
REPRSENTATION CONTIGE
Reprsentation Standard:
Si la racine de larbre est toujours la position 1 du tableau, larbre
sera dfini comme suit:
Indice Tnoeud
Vide FG Info FD
0 F 1 a 4
1 F 2 b 3
2 F -1 c -1
3 F -1 d -1
4 F -1 e -1
45
V ? ? ?
M-1 V ? ? ?
REPRSENTATION CONTIGE
Reprsentation Standard:
Si on veut que la racine soit n'importe o dans le tableau, alors
l'arbre sera dfini (le nud reste inchang):
0 F -1 c -1
1 F 0 b 3
Racine
2 F 1 a 4
3 F -1 d -1
4 F -1 e -1 46
V ? ? ?
M-1 V ? ? ?
PARTIE III:
ARBRES BINAIRES DE
RECHERCHE(ABR)
PLAN DE LA PARTIE III
Dfinition
Complexit
Parcours
(Insertion et Suppression)
48
49
DFINITION
Un Arbre Binaire de Recherche (ABR) est un arbre
binaire ordonn tel que pour tout nud i :
Toutes les valeurs du sous-arbre gauche de i sont strictement
infrieures la cl de i , et
Toutes les valeurs du sous-arbre droit de i sont suprieures ou
gales la cl de i .
50
COMPLEXIT
Intrt de cette proprit : diminuer la complexit
temporel de recherche, dinsertion et de suppression dans
larbre
87 ?
15 59
5 27 71
3 10 33
55
8
ordonne suivante : 3, 5, 8, 10, 15, 20, 27, 33, 52, 55, 59,
OPRATION DE RECHERCHE
La recherche est dichotomique, chaque tape, un sous
arbre est limin:
Rechercher (55)
Rechercher (FD(20)) 55 ?
20
Rechercher (FG(59))
Rechercher (FD(27)) 15 59
55 53
8
52
OPRATION DE RECHERCHE
Fonction RechercherABR_rec (R:*Tnoeud, x: entier) : * Tnoeud
Debut
Si R =Nil alors
Retourner (Null)
Sinon
Si Info (R) = x alors
Retourner (R)
Sinon
Si Info(R)>x alors
Retourner (RechercherABR_rec(FG(R), x))
Sinon
Retourner (RechercherABR_rec(FD(R), x)) 54
Fin
OPRATION DE RECHERCHE
Fonction RechercherABR _iter(R:*Tnoeud, x: entier) : * Tnoeud
Debut
TQ R Nil faire
Si Info (R) = x alors
Retourner (R)
Sinon
Si Info(R)>x alors
RFG(R)
Sinon
RFD(R)
FTQ
Retourner (Null) 55
Fin
OPRATION DINSERTION
L'insertion d'un lment se fait toujours au niveau d'une
56
OPRATION DINSERTION
+ 25
20
15 59
5 27 71
3 10 25 33
RechercherPosition (25) 55
8
Rechercher (FD(20)) 52
Rechercher (FG(59))
Position trouv pour linsertion, le pre est le nud 27
57
Insrer 25 au niveau de la feuille dont le pre est 27
OPRATION DINSERTION
Fonction InsererABR_rec (R:*Tnoeud, x: entier) : * Tnoeud
Debut
Si R =Nil alors
RCreerNoeud(x)
Sinon
Si Info(R)>x alors
Aff_FG(R, InsererABR_rec(FG(R), x))
Sinon
Aff_FD(R, InsererABR_rec(FD(R), x))
Retourner (R)
Fin 58
OPRATION DINSERTION
Fonction InsererABR_iter (R:*Tnoeud, x: entier) : * Tnoeud
Var P, Q: *Tnoeud
Debut
PCreerNoeud(x)
Si R =Nil alors
RP
Sinon
QR
TQ (QNull) faire
Si Info(Q)>x alors
Si FG(Q) =Nil alors Aff_FG(Q, P)
QFG(Q)
Sinon
Si FD(Q)=Null alors Aff_FD(Q, P)
QFD(Q) 59
Retourner (R)
Fin
OPRATION DE SUPPRESSION
Pour supprimer le nud i dun ARB, il faudra le
60
OPRATION 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 nud i qui contient la valeur 8
1. Rechercher(8)
2. Librer le nud i 20
15 59
5 27 71
3 10 33
i 12 55 61
8
52
OPRATION DE SUPPRESSION
Cas 2: Suppression d'un nud avec un fils
Il faut l'enlever de l'arbre en le remplaant par son fils.
Exemple: supprimer le nud i qui contient la valeur 10
1. Rechercher(10)
5 27 71
3 10 33
i
12 55 62
52
OPRATION DE SUPPRESSION
Cas 2: Suppression d'un nud avec un fils
Il faut l'enlever de l'arbre en le remplaant par son fils.
Exemple: supprimer le nud i qui contient la valeur 10
1. Rechercher(10)
5 27 71
3 10 i 33
55 63
8
52
OPRATION DE SUPPRESSION
Cas 3: Suppression d'un nud avec deux fils
Etape 1: On change le nud supprimer avec son successeur
le plus proche (le nud le plus gauche du sous-arbre droit) ou
son plus proche prdcesseur (le nud le plus droite du
sous-arbre gauche). Cela permet de garder une structure d'arbre
binaire de recherche. 34
22 66
8 29 50 71
Le plus proche 70 81
17 25 56
prdcesseur
9 23 32 55 69
64
Le plus proche
successeur
OPRATION DE SUPPRESSION
Cas 3: Suppression d'un nud avec deux fils
Etape 1 Cas A: On change le nud supprimer avec son
successeur le plus proche (le nud le plus gauche ou le plus
petit du sous-arbre)
Racine: 71
La plus petite valeur : 69
34
22 66
8 29 50 71
17 25 56 70 81
65
9 23 32 55 69
OPRATION DE SUPPRESSION
Cas 3: Suppression d'un nud avec deux fils
Etape 1 Cas A: On change le nud supprimer avec son
successeur le plus proche (le nud le plus gauche ou le plus
petit du sous-arbre)
Racine: 71
La plus petite valeur : 69
34
66
Fonction Successeur (R: *Tnoeud): *Tnoeud
Debut 50 71
RFD(R)
Si RNull alors 56 70 81
TQ FG(R)Null faire RFG(R) 66
Retourner (R)
55 69
Fin
OPRATION DE SUPPRESSION
Cas 3: Suppression d'un nud avec deux fils
Etape 1 Cas A: On change le nud supprimer avec son
plus proche prdcesseur (le nud le plus droite ou le plus
grand du sous-arbre gauche).
Racine: 50
La plus petite valeur : 56
34
22 66
8 29 50 71
17 25 56 70 6781
9 23 32 55 69
OPRATION DE SUPPRESSION
Cas 3: Suppression d'un nud avec deux fils
Etape 1 Cas A: On change le nud supprimer avec son
plus proche prdcesseur (le nud le plus droite ou le plus
grand du sous-arbre gauche).
Racine: 50
La plus petite valeur : 56
34
22 66
69
8 29 50 71
17 25 56 70 81
9 23 32 55 69
69
OPRATION DE SUPPRESSION
Cas 3: Suppression d'un nud avec deux fils
Puis on applique nouveau la procdure de suppression qui est
maintenant une feuille ou un nud avec un seul fils.
Ainsi, si on choisit d changer le nud 66 avec son plus proche
prdcesseur 56 , on obtient
34
22 66
56
8 29 50 71
17 25 55 70 81
9 23 32 69
70
OPRATION DE SUPPRESSION
En conclusion, pour supprimer le nud i dun ARB, il
faudra le rechercher. Une fois le nud i trouv, on se
trouve dans une des situations suivantes :
i
Cas Action
FG FD
Feuille Null Null Remplacer i parNil
Avec un Null Null Remplacer i par FD(i)
fils Null Null Remplacer i par FG(i)
1. Rechercher le plus proche
Avec prdcesseur ou successeur de i ,
deux Null Null soit P.
71
fils 2. Remplacer Info(i) par Info(P)
3. Remplacer P par FG(P) ou FD(P)
OPRATION DE SUPPRESSION
Fonction SupprimerABR_iter (R:*Tnoeud, x: entier) : * Tnoeud
Var P, Q: *Tnoeud
Debut
RechercherABR (R, x, Q, P) Procedure RechercherABR (R: *Tnoeud, x:
entier, Var Q: *Tnoeud, Var Pre: *Tnoeud)
Pre Null; Q Null;
Cette procdure
TQ R Nil faire
retourne ladresse du
Si Info (R) = x alors
nud contenant x QR
(soit Q) ainsi que Sinon
ladresse de son pre PreR
(soit Pre) Si Info(R)>x alors
RFG(R)
Sinon 72
RFD(R)
FTQ
OPRATION DE SUPPRESSION
Fonction SupprimerABR_iter (R:*Tnoeud, x: entier) : * Tnoeud
Var P, Q: *Tnoeud
Debut
RechercherABR (R, x, Q, P)
Si Q Nil alors
// llment x existe dans Q
Si FG(Q) =Nil alors
Si FD(Q) =Nil alors
//Cas n1: Q est une feuille
Cette procdure
Chaner (R, P,Nil, x)
Sinon //Cas n2: Q possde un FD permet de chane le
Chaner (R, P, FD(Q), x) pre de Q (P) avec le
Sinon
Fil de Q selon la
Si FD(Q) =Nil alors
//Cas n2: Q possde un FG valeur de x
Chaner (R, P, FG(Q), x) 73
OPRATION DE SUPPRESSION
Fonction SupprimerABR_iter (R:*Tnoeud, x: entier) : * Tnoeud
Var P, Q: *Tnoeud
Debut
RechercherABR (R, x, Q, P)
Si Q Nil alors
// llment x existe dans Q
Si FG(Q) =Nil alors Procedure Chaner (Var R:
Si FD(Q) =Nil alors *Tnoeud , PreQ: *Tnoeud,
//Cas n1: Q est une feuille FilsQ: *Tnoeud, x: entier)
Chaner (R, P,Nil, x) Si PreQ =Nil alors
Sinon //Cas n2: Q possde un FD RFilsQ
Chaner (R, P, FD(Q), x) Sinon
Sinon
Si Info(P)>x alors
Si FD(Q) =Nil alors
Aff_FG(P, FilsQ)
//Cas n2: Q possde un FG
Chaner (R, P, FG(Q), x) Sinon 74
Aff_FD(P, FilsQ)
OPRATION DE SUPPRESSION
Fonction SupprimerABR_iter (R:*Tnoeud, x: entier) : * Tnoeud
Var P, Q: *Tnoeud
Debut
RechercherABR (R, x, Q, P)
Si Q Nil alors // llment x existe dans Q
Si FG(Q) =Nil alors
Si FD(Q) =Nil alors //Cas n1: Q est une feuille
Chaner (R, P,Nil, x)
Sinon //Cas n2: Q possde un FD
Chaner (R, P, FD(Q), x)
Sinon
Si FD(Q) =Nil alors //Cas n2: Q possde un FG
Chaner (R, P, FG(Q), x)
Sinon // Cas n3: Q possde deux fils
Successeur (Q, S, PS)
Cette procdure retourne ladresse du successeur
75
de Q (S) ainsi que ladresse de son pre (PS)
OPRATION DE SUPPRESSION
Fonction SupprimerABR_iter (R:*Tnoeud, x: entier) : * Tnoeud
Var P, Q: *Tnoeud
Debut
RechercherABR (R, x, Q, P)
Si Q Nil alors // llment x existe dans Q
Si FG(Q) =Nil alors
Si FD(Q) =Nil alors //Cas n1: Q est une feuille
Chaner (R, P,Nil, x)
Sinon //Cas n2: Q possde un FD
Chaner (R, P, FD(Q), x)
Sinon
Si FD(Q) =Nil alors //Cas n2: Q possde un FG
Chaner (R, P, FG(Q), x)
Sinon // Cas n3: Q possde deux fils
Successeur (Q, S, PS)
Procdure Successeur (R: *Tnoeud, Var Q, PS: *Tnoeud)
PSR; SFD(R) 76
Si (SNull) alors
TQ FG(S)Null faire SFG(S)
RechercherABR (R, x, Q, P)
Si Q Nil alors // llment x existe dans Q
Fin faux
TQ non fin faire
Si FG(Q) =Nil alors
Si FD(Q) =Nil alors //Cas n1: Q est une feuille
Chaner (R, P,Nil, x); Fin vrai
Sinon //Cas n2: Q possde un FD
Chaner (R, P, FD(Q), x); Fin vrai
Sinon
Si FD(Q) =Nil alors //Cas n2: Q possde un FG
Chaner (R, P, FG(Q), x); Fin vrai
Sinon // Cas n3: Q possde deux fils
Successeur (Q, S, P)
Aff_Info (Q, Info(S))
QS; PPS; xInfo(S)
FTQ
LibrerNoeud(Q) 77
FSI
Retourner (R)
OPRATION DE SUPPRESSION
Fonction SupprimerABR_rec (R:*Tnoeud, x: entier) : * Tnoeud
Debut
Si R =Nil alors
Retourner (R)
Sinon
Si Info(R)>x alors
Aff_FG(R, SupprimerABR_rec(FG(R), x))
Retourner (R)
Sinon
Si Info(R)<x alors
Aff_FD(R, SupprimerABR_rec(FD(R), x))
Retourner (R)
Sinon // Info(R) = x
Retourner (SupprimerRacine (R)) 78
Fin
OPRATION DE SUPPRESSION
Fonction SupprimerRacine (R:*Tnoeud) : * Tnoeud
Debut
Si FG(R) =Nil alors
Si FD(R) =Nil alors //Cas n1: R est une feuille
LibrerNoeud(R)
Retourner (Null)
Sinon //Cas n2: R possde un FD
DFD(R)
LibrerNoeud(R)
Retourner (D)
Sinon
Si FD(Q) =Nil alors //Cas n2: R possde un FG
GFG(R)
LibrerNoeud(R)
Retourner (G)
Sinon // Cas n3: R possde deux fils
SSuccesseur (R)
Aff_Info (R, Info(S))
Aff_FD(R, SupprimerABR_rec(DF(R), Info(S))) 79
Retourner (R)
Fin
PAR ABR
tant donn un tableau dentiers T (n: sa taille), dire
Exemple:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
80
PAR ABR
1. Insrer toutes les lments du tableau dans un
ABR
20 15 10 35 19 13 5 3 12 7 16 40 25 38
20
15 35
10 25 40
19
5 13 38 81
16
3 7 12
PAR ABR
2. Parcourir lABR en inordre : GRD
20
15 35
10 25 40
19
5 13 38
16
3 7 12
3 5 7 10 12 13 15 16 19 20 25 35 38 40 82
PAR ABR
Procedure Tri_ARB(Var T: Tableau, n: entier)
Debut
RNull
Inordre(FG(R), T))
indice++ 83
Inordre(FD(R), T)
PARTIE IV:
ARBRES BINAIRES DE
RECHERCHE QUILIBRS
(ARBRES AVL)
PLAN DE LA PARTIE IV
Introduction
Dfinition
Techniques dquilibrage
Suppression
85
INTRODUCTION
La complexit au meilleur des cas de la recherche, de
linsertion et de la suppression dans un ABR est O(h), o
h est la hauteur (ou profondeur) de larbre. Ce cas est
atteint par des arbres quilibrs
Cependant, la complexit au pire cas pour un arbre n
nuds, est O(n). Ce cas est atteint par des arbres trs
dsquilibrs, ou filiformes.
Plusieurs espces des arbres quilibrs ont t
dvelopps: les arbres AVL, les arbres 2-3, les arbres
86
rouge et noir, etc.
INTRODUCTION
87 ?
|Profondeur(FG(R) ) Profondeur(FD(R)) | 1
les arbres gauches et droits d'un nud sont des arbres AVL.
Un champs supplmentaire est ajout tous les nuds: cest le
facteur de dsquilibre (appel aussi facteur de balance88
Bal ) qui est calcul aprs chaque insertion/suppression.
EXEMPLE
Exemple: soit lABR suivant. Est-il un arbre AVL?
Notons:
quune feuille est un
+1
100
arbre de hauteur 0,
et que larbre vide a la +1
50
+1
200
hauteur 1.
Larbre vide et larbre
0
30 0
80 0
150
rduit une feuille,
sont des arbres AVL 0
10 40
+1
50
+1
200
0
30 0
80 0
150
0 0
10 40
90
EXEMPLE
Exemple: Cet ABR est un arbre AVL avant insertion
Insrer la valeur 5
100
+1 10 0 40
5 0
arbre dsquilibr
EXEMPLE
Exemple: Cet ABR est un arbre AVL avant insertion
Insrer la valeur 45 +1
100
+1
50
+1
200
0
30 0
80 0
150
0 0
10 40
92
EXEMPLE
Exemple: Cet ABR est un arbre AVL avant insertion
Insrer la valeur 45
100
+2 50 +1 200
-1 30 0
80 0
150
0 10 -1 40
45 0
Cet arbre nest pas un arbre AVL aprs insertion de 45 93
arbre dsquilibr
TECHNIQUES DQUILIBRAGE
Lopration dquilibrage, appele rotation, sapplique tous les
arbres binaires.
Le but des rotations est de pouvoir rquilibrer un ABR.
On opre donc une rotation gauche lorsque larbre est
dsquilibr droite, i.e. son sous-arbre droit est plus haut que
son sous-arbre gauche.
On opre une rotation droite dans le cas contraire savoir son
sous-arbre gauche est plus haut que son sous-arbre droit.
Les rotations ne sont donc dfinies que pour les arbres binaires non
vides dont le sous-arbre gauche (pour rotation gauche) et sous-arbre
droit (pour rotation droite) nest pas vide.
94
Les rotations prservent lordre des donnes dun ABR (parcours
inordre).
TECHNIQUES DQUILIBRAGE
Rotation simple : Rotation droite
Soit A=(B, R, Z) un arbre binaire tel que B=(X, P, Y).
+2
0
R P
Rotation droite
P 0
+1 R
Z
(hauteur
h)
X
Y (hauteur
h+1)
X
(hauteur
h) Y Z95
(hauteur (hauteur (hauteur
h+1) h) h)
Dsquilibre gauche
TECHNIQUES DQUILIBRAGE
Rotation simple : Rotation droite
Soit A=(B, R, Z) un arbre binaire tel que B=(X, P, Y).
+2
-1
R P
Rotation droite
P +1
0 R
Z
(hauteur
h-1)
X
(hauteur
X Y h)
Y Z96
(hauteur (hauteur (hauteur
(hauteur h)
h) h) h-1)
Dsquilibre gauche
TECHNIQUES DQUILIBRAGE
Rotation simple : Rotation gauche
Soit A=(X, R, B) un arbre binaire tel que B=(Y, P, Z).
-2 Rotation gauche 0
R P
-1 0 R
P
X
Z
(hauteur
h)
Y
(hauteur Z X Y (hauteur
h+1)
h) (hauteur (hauteur h)
h+1)
(hauteur h) 97
Dsquilibre droit
TECHNIQUES DQUILIBRAGE
Rotation simple : Rotation gauche
Soit A=(X, R, B) un arbre binaire tel que B=(Y, P, Z).
-2 Rotation gauche +1
R P
0 -1 R
P
X
Z
(hauteur
h-1)
X Y
Y Z (hauteur h-1)
(hauteur
(hauteur
h)
(hauteur (hauteur h)
h) h)
98
Dsquilibre droit
TECHNIQUES DQUILIBRAGE
Rotation double : double rotation gauche-droite
Cest une rotation gauche sur le sous arbre-gauche du nud r
suivie dune rotation droite sur le nud r
A 0 0
A
(h) C B C D
(h) (h) (h)
(h) (h)
A B
B C (h) (h)
(h) (h)
99
((A, P, (B, Q, C)), R, D) (((A, P, B), Q, C), R, D) ((A, P, B), Q, (C, R, D))
TECHNIQUES DQUILIBRAGE
Rotation double : double rotation gauche-droite
Cest une rotation gauche sur le sous arbre-gauche du nud r
suivie dune rotation droite sur le nud r
A +1 0
A
(h) C B C D
(h) (h) (h)
(h-1) (h-1)
A B
B C (h) (h)
(h) (h-1)
100
((A, P, (B, Q, C)), R, D) (((A, P, B), Q, C), R, D) ((A, P, B), Q, (C, R, D))
TECHNIQUES DQUILIBRAGE
Rotation double : double rotation gauche-droite
Cest une rotation gauche sur le sous arbre-gauche du nud r
suivie dune rotation droite sur le nud r
A -1 +1
A
(h) C B C D
(h) (h-1) (h)
(h) (h)
A B
B C (h) (h-1)
(h-1) (h)
101
((A, P, (B, Q, C)), R, D) (((A, P, B), Q, C), R, D) ((A, P, B), Q, (C, R, D))
TECHNIQUES DQUILIBRAGE
Rotation double : double rotation droite-gauche
Cest une rotation droite sur le sous arbre-droit du nud r suivie
dune rotation gauche sur le nud r
102
(A, R, ((B, Q, C), P, D)) (A, R, (B, Q, (C, P, D))) ((A, R, B), Q, (C, P, D))
TECHNIQUES DQUILIBRAGE
Rotation double : double rotation droite-gauche
Cest une rotation droite sur le sous arbre-droit du nud r suivie
dune rotation gauche sur le nud r
103
(A, R, ((B, Q, C), P, D)) (A, R, (B, Q, (C, P, D))) ((A, R, B), Q, (C, P, D))
TECHNIQUES DQUILIBRAGE
Rotation double : double rotation droite-gauche
Cest une rotation droite sur le sous arbre-droit du nud r suivie
dune rotation gauche sur le nud r
104
(A, R, ((B, Q, C), P, D)) (A, R, (B, Q, (C, P, D))) ((A, R, B), Q, (C, P, D))
OPERATIONS DE BASE
La recherche est identique celui des ABR car les
arbres AVL sont avant tout des ABR quilibrs.
Linsertion dun lment dans un arbre AVL peut
provoquer un dsquilibre. Donc, pour rtablir lquilibre
(rquilibrer) de larbre aprs une insertion, une seule
rotation ou double rotation suffit.
La suppression dun lment dans un arbre AVL peut
provoquer un dsquilibre. Donc pour rtablir lquilibre
(rquilibrer) de larbre aprs une suppression, il faut
105
jusqu h rotations (h est la hauteur de larbre) ou double
rotations.
INSERTION
Lajout dun nud se fait toujours au niveau dune feuille,
puis on rquilibre larbre AVL si linsertion a
dsquilibr larbre.
Le dsquilibre est rencontr lorsque le facteur
dquilibrage dun nud de larbre gale 2.
106
INSERTION
Exemple: soit la srie de nombres insrer dans un
arbre AVL (2 10 12 4 16 8 6 14 )
2 10 12 4 16 8 6 14 2 10 12 4 16 8 6 14
2
0
2 -2
10 -1
2 10 12 4 16 8 6 14
Rotation simple
2 -1 12 0
10 0 10 0
107
2 0 12 0
INSERTION
Exemple: soit la srie de nombres insrer dans un
arbre AVL (2 10 12 4 16 8 6 14 )
2 10 12 4 16 8 6 14 2 10 12 4 16 8 6 14
10 1
10 0
2 -1 12 0 2 -1 12 -1
4 0 4 0 16 0
108
INSERTION
Exemple: soit la srie de nombres insrer dans un
arbre AVL (2 10 12 4 16 8 6 14 )
2 10 12 4 16 8 6 14
10 1
10 0
2 -2 12 -1
Rotation 4 0
12 -1
simple
4
-1
16 0
0 2 8 0 16 0
109
8 0
INSERTION
Exemple: soit la srie de nombres insrer dans un
arbre AVL (2 10 12 4 16 8 6 14 )
2 10 12 4 16 8 6 14
10 1
4 -1 12 -1
0 2 8 1 16 0
110
6 0
INSERTION
Exemple: soit la srie de nombres insrer dans un
arbre AVL (2 10 12 4 16 8 6 14 )
2 10 12 4 16 8 6 14
1
10 0 10
4 14 0
4 12 Rotation
-1 -2 -1
double
0
2 8 1 16 1 2 8 1 12 16
0
0 0
6 111
6 14 0 0
0
INSERTION
Exemple 2: soit larbre suivant, donner le rsultat aprs
insertion de 7
10
4 14
2 8 12 16
1 6 9
112
INSERTION
Exemple 2: soit larbre ci-dessus, donner le rsultat
aprs insertion de 7
2
10 8
0
4 -1 14 0
Rotation 0
4 10
-1
double
1
2 8 1 12 16
0 0
14 0
1
2 6 -1 9 0
0
1 6 -1 9 0
12 16
0
1 7 0 0
0
7
0 113
Nud insr
INSERTION
Aprs insertion gauche Avant Aprs insertion droite
+1 R 0 R -1 R
h+1 h h h h h+1
+2 R Cas A +1 R 0 R
0 -1 -2 Cas B
R R R
115
+2 R Cas A
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
0 P
h
h h
-2 R -2 R
+1 P -1 P
h h
h+1 h h h
infrieur ou suprieur.
119
SUPPRESSION
Exemple: soit larbre suivant. Donner le rsultat aprs la
suppression de 10:
0 0
8 8
4 4
0 -1 0 -1
10 12
14 0
14 -1
1
2 6 -1 9 0 1
2 6 -1 9 0
1 12 16 1 16
7 7
0 0 0 0 0 0
0
120
SUPPRESSION
Exemple: soit larbre suivant. Donner le rsultat aprs la
suppression de 8:
0 0
8 9
4 4
0 -1 0 -2
12 12
14 -1
14 -1
1
2 6 -1 9 0 1
2 6 -1
1 16 1 16
7 7
0 0 0 0 0 0
121
SUPPRESSION
Exemple: soit larbre suivant. Donner le rsultat aprs la
suppression de 8:
1
9
0
9
RSG
0
4
0
4
0 -2 14
12
0 0
14 -1 1
2 6 12 16
1
2 6 -1
-1
1 16 0
1 7 0
7
0 0 0
122
SUPPRESSION
Exemple: soit larbre suivant. Donner le rsultat aprs la
suppression de 12 puis 16:
1
9 9
+2
0
4
0
14 4
0
14
0
0 0
1
2 6 12 16
6
-1 1
2 -1
0
1 7 0
1 7
0 0
123
SUPPRESSION
Exemple: soit larbre suivant. Donner le rsultat aprs la
suppression de 12 puis 16:
+2
9 -1
4
RSD
0
4
0
14 1
2 9
1
1
2 6 -1
1 0 6 -1
14 0
0
0
1 7 0 7
124
SUPPRESSION
Exemple: soit larbre suivant. Donner le rsultat aprs la
suppression de 30:
-1 -1
50 50
+2
30
+1
100
+1
40 100
+1
0
-1 -1
-1
10 40 80 +1 200 -1
10 80 +1 200
+1 0
0
0 0
0
20 70 90 300 0
20 70 90 300
+1
0
125
60 0 60
SUPPRESSION
Exemple: soit larbre suivant. Donner le rsultat aprs la
suppression de 30:
-1
50 -2
50
+2 RDG-D
40 100
+1
20
0 +1
100
-1
-1
10 80 +1 200 0 0
-1
10 40 80 +1 200
+1 0
0
0
20 70 90 300
70 90 0 300 0
+1
0
126
60 0
60
SUPPRESSION
Exemple: soit larbre suivant. Donner le rsultat aprs la
suppression de 30:
-2 0
50 80
RDD-G
0
20
0 +1
100 50 100
-1
0 0
-1 -1
10 40 80 +1 200 20
0 +1
70 90 200
0
70 90 0 300 0
10 40 60 0
300
+1
0 0 0
127
0
60
PARTIE V:
ARBRES BINAIRES
QUILIBRS (TAS)
PLAN DE LA PARTIE V
Dfinition
Hauteur
Suppression
Implmentation
129
Exemples dApplication
DFINITION
Un TAS (HEAP) invent par Williams Floyd en 1964, est
unarbre binairequi vrifie les deux proprits
suivantes:
Proprit structurelle: arbre binaire complet (ou
parfait), i.e.Tous les niveaux sont totalement remplis
sauf le dernier qui est rempli de la gauche vers la
droite.
Proprit dordre:
TASmin: Cl (pre) Cl(fils) 130
4 Minimum
5 6
15 9 7 20
131
16 25 14 12 11 8
Maximum
DFINITION
Exemple dun TASmax
Cl (pre) Cl (fils)
Le maximum se trouve toujours la racine
40 Maximum
35 26
15 19 17 20
132
1 13 14 12 11 8
Minimum
HAUTEUR
Thorme: Un TAS de n nud a une hauteur O(log2 n)
Dmonstration
Soit h, la hauteur dun tas de n nud
Au niveau ih, ni=2i
Donc n = 20 + 21 + 22 + ....+ 2h-1 + c tel que , 0c<2h
134
INSERTION
Exemple: Soit le TASmin suivant. Donner le rsultat
aprs linsertion 5, 17, 3, 18
6
9
15 10 7 20
16 25 14 12 11 8
135
INSERTION
Exemple: Soit le TASmin suivant.
Insertion 5
6
9
15 10 7 20
16 25 14 12 11 8 5
136
INSERTION
Exemple: Soit le TASmin suivant.
Insertion 17
5
9
15 10 7 6
16 25 14 12 11 8 20 17
137
INSERTION
Exemple: Soit le TASmin suivant.
Insertion 3
5
9
15 10 7 6
16 25 14 12 11 8 20 17
138
3
INSERTION
Exemple: Soit le TASmin suivant.
Insertion 18
5
4
9 10 7 6
15 25 14 12 11 8 20 17
139
16 18
INSERTION
Exercice: Construire un TASmin et un TASmax partir
des valeurs suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
140
INSERTION
Solution: Construire un TASmin partir des valeurs
suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
20 15 10 10
15 20 20 19
10 15 15
35 19 35 20 13
10
3
19 13
5 10
5
35 20 15 5
19 19 10
20 15 13
141
35 12 35 20 15 13
3
INSERTION
Solution: Construire un TASmin partir des valeurs
suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
3 3
5 10 5 10
12 20 15 13 12 7 15 13
35 19 35 19
7 20 16 40 25 38
142
INSERTION
Solution: Construire un TASmax partir des valeurs
suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
35
20
15 10 20 10
35
15 19
13
143
INSERTION
Solution: Construire un TASmax partir des valeurs
suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
35
20 13
15 19
10 5
3 7 40
12 16 40
20 35
15 19 13 5 144
3 12 7 16 10
25
INSERTION
Solution: Construire un TASmax partir des valeurs
suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
40
20 35
15 19 25 5
3 12 7 16 10
13 38
145
INSERTION
Solution: Construire un TASmax partir des valeurs
suivantes:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
40
20 38
15 19 25 35
3 12 7 16 10
13 5
146
INSERTION
Linsertion dune valeur v peut ncessiter O(h) =
147
RECHERCHE
Pour rechercher une valeur v dans un TASmin [ou
niveau)
148
RECHERCHE
Exemple: Soit le TASmin suivant.
7?
6
9
15 10 7 20
16 25 14 12 11 8
149
La valeur existe, fin de recherche
RECHERCHE
Exemple: Soit le TASmin suivant.
8?
6
9
15 10 7 20
16 25 14 12 11 8
150
La valeur existe, fin de recherche
RECHERCHE
Exemple: Soit le TASmin suivant.
3?
6
9
15 10 7 20
16 25 14 12 11 8
151
La valeur nexiste pas , fin de recherche
RECHERCHE
Exemple: Soit le TASmin suivant.
30 ?
6
9
15 10 7 20
16 25 14 12 11 8
152
Fin de recherche, la valeur nexiste pas
RECHERCHE
La recherche d'une valeur v dans un TAS peut
ncessiter O(n) oprations o n est le nombre des nuds.
Pire des cas: Si v est suprieure la valeur maximale du
TASmin [ou infrieure la valeur minimale du TASmax], alors
on doit descendre jusquau dernier niveau en parcourant tous les
nuds pour vrifier que la valeur recherche nexiste pas.
TASmax]
155
SUPPRESSION
Exemple: Soit le TASmin suivant. Donner le rsultat
aprs la suppression de 9, 16, 6 et 4.
6
9
15 10 7 20
16 25 14 12 11 8
156
SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 9.
6
9
15 10 7 20
16 25 14 12 11 8
157
SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 9, 16.
6
8
15 10 7 20
16 25 14 12 11
158
SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 16.
6
8
15 10 7 20
11 25 14 12
159
SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 6.
6
8
11 10 7 20
15 25 14 12
160
SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 6.
12
8
11 10 7 20
15 25 14
161
SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 4.
7
8
11 10 12 20
15 25 14
162
SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 4.
14
7
8
11 10 12 20
15 25
163
SUPPRESSION
Exemple: Soit le TASmin suivant.
Suppression de 4.
12
8
11 10 14 20
15 25
164
IMPLMENTATION
Un TAS se reprsente naturellement par un tableau:
Les sommets sont numrots par un parcours en largeur, de
gauche droite.
Le sommet i est rang dans la case dindice 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
165
1 2 3 4 5 6 7 8 9 10 11 12 13
IMPLMENTATION
On parle ici de la reprsentation statique
squentielle dun arbre binaire
La case 0 est vide
Indice(racine)=1
Indice(FG)=2*Indice(Pre)
Indice(FD)=2*Indice(Pre)+1
Indice(Pre)= [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
166
IMPLMENTATION
Exercice:
dentier.
167
IMPLMENTATION
STRUCTURE DE DONNES
T : TABLEAU[0..Max-1] dentier
Dernier:ENTIER//indicesurladernirecaserempliedu
T(initialis0)
FIN
VAR R : Tarbre
168
IMPLMENTATION
MODLE
Entte Corp
Procdure CreerNoeud (Var R: R.dernier++
i:entier): entier
Procdure Aff_Info (Var R: R.T[i]x
4 4
6 6
5 5
15 9 7 20 15 9 7 3
16 25 14 12 11 8 3 16 25 14 12 11 8 20
4 5 6 15 9 7 20 16 25 14 12 11 8 3 4 5 6 15 9 7 3 16 25 14 12 11 8 20
3
4
4
5 3
5
15 9 7 6
15 9 7 6
16 25 14 12 11 8 20
16 25 14 12 11 8 20
170
3 5 4 15 9 7 6 16 25 14 12 11 8 20
4 5 3 15 9 7 6 16 25 14 12 11 8 20
IMPLMENTATION
INSERTION (ALGORITHME)
Procdure Inserer_TASmin(Var R: Tarbre, x: entier)
Var P, i: entier
Dbut
i R.dernier
P Pre(R, i)
TQ ((P-1) et (Info (R, P) > x)) faire // Info (R, P) <x dans le cas TASmax
Retourner (-1)
Fin
IMPLMENTATION
RECHERCHE (ALGORITHME)
On peut aussi faire une simple recherche
squentielle dans le tableau T comme suit:
173
SUPPRESSION (EXEMPLE ILLUSTRATIF (CAS A))
2 2
4 4
8 8
15 9 5 20 15 9 5 20
26 25 14 12 11 6 6 25 14 12 11
2 8 4 15 9 5 20 26 25 14 12 11 6 2 8 4 15 9 5 20 6 25 14 12 11
2 5
4 4
6 8
8 9 5 20 6 9 5 20
15 25 14 12 11 15 25 14 12 11 174
2 6 4 8 9 5 20 15 25 14 12 11 2 8 4 6 9 5 20 15 25 14 12 11
SUPPRESSION (EXEMPLE ILLUSTRATIF (CAS B))
4 26
6 6
5 5
15 9 7 20 15 9 7 20
16 25 14 12 11 26 16 25 14 12 11
4 5 6 15 9 7 20 16 25 14 12 11 26 26 5 6 15 9 7 20 16 25 14 12 11
5 5
6 6
9 26
15 26 7 20 15 9 7 20
16 25 14 12 11 16 25 14 12 11 175
5 9 6 15 26 7 20 16 25 14 12 11 5 26 6 15 9 7 20 16 25 14 12 11
SUPPRESSION (EXEMPLE ILLUSTRATIF (CAS B))
5 5
6 6
9 26
15 26 7 20 15 9 7 20
16 25 14 12 11 16 25 14 12 11
5 9 6 15 26 7 20 16 25 14 12 11 5 26 6 15 9 7 20 16 25 14 12 11
6
9
15 26 7 20
16 25 14 26 11 176
5 9 6 15 12 7 20 16 25 14 26 11
IMPLMENTATION
SUPPRESSION (ALGORITHME)
Procdure Supprimer_TASmin (Var R: Tarbre, x: entier)
Var P, G, D: entier
Dbut
iRechercher_TASmin (R, x) //Etape 1
Si (i -1) alors //llment existe dans le TAS
Aff_Info (R, i, Info (R, R.dernier)); R.Dernier --; // Etape 2
//Etape 3: cas A
P Pre (R, i)
Si (P-1) et (Info (R, P) > Info (R, i))
rpter
Permuter (R, i, P)
iP
P Pre (i)
Jusqu ((P=-1) ou (Info (R, P) Info (R, i)))
177
Sinon
IMPLMENTATION
SUPPRESSION (ALGORITHME)
Procdure Supprimer_TASmin (Var R: Tarbre, x: entier)
Var P, G, D, min: entier
Dbut
..
Sinon
//Etape 3: cas B
min i; fin faux
Rpter
G FG(R, i)
D FD (R, i)
Si ((G -1) et (Info (R, min)> Info (R, G)) alors min G
Si ((D -1) et (Info (R, min)> Info (R, D)) alors min D
Si min i alors Permuter (R, i, min); i min
Sinon fin vrai
178
Jusqu (fin)
Fsi
EXEMPLES DAPPLICATION
Malgr que la recherche et la suppression dans un TAS
179
EXEMPLE DAPPLICATION
TRI PAR TAS
tant donn un tableau dentiers T (n: sa taille), dire
Exemple:
20 15 10 35 19 13 5 3 12 7 16 40 25 38
180
EXEMPLE DAPPLICATION
TRI PAR TAS
1. Transformer le tableau en un TASMIN
20 15 10 35 19 13 5 3 12 7 16 40 25 38
5 10
12 7 15 13
35 19 20 16 40 25 38
181
EXEMPLE DAPPLICATION
TRI PAR TAS
2. Extraire n fois le minimum du TASMIN :
5 10
12 7 15 13 5
35 19 7 10
20 16 40 25 38
12 16 15 13
35 19 20 38 40 25
3 5 182
EXEMPLE DAPPLICATION
TRI PAR TAS
2. Extraire n fois le minimum du TASMIN :
12 10
19 16 15 13
10
35 25 20 38 40
12 13
19 16 15 40
35 25 20 38
3 5 7 10 183
EXEMPLE DAPPLICATION
TRI PAR TAS
2. Extraire n fois le minimum du TASMIN :
13
12
16 15
16 13
19 20 38 40
19 20 15 40
35 25
35 25 38
15
16 25
19 20 38 40
35
184
3 5 7 10 12 13 15
EXEMPLE DAPPLICATION
TRI PAR TAS
2. Extraire n fois le minimum du TASMIN :
16 19
19 25 20 25
35 20 38 40 35 40 38
35 25 20
38 40 35 40 35 25
38 38 40
38
40
40
185
3 5 7 10 12 13 15 16 19 20 25 35 38 40
EXEMPLE DAPPLICATION
TRI PAR TAS
Tri_TASmin (Tab: Tableau, n: entier)
Var R: Tarbre
Dbut
R.Dernier 0;
//Construire le TAS
Tab[i] R.T[1]
Fin
SOURCES DE CE COURS
N. EL-ALLIA , Cours dAlgorithmique et Structures de donnes dynamiques, Ecole
nationale Suprieure dInformatique (ESI), 2014.
Djamel Eddine ZEGOUR, Cours de Structures de Donnes, Ecole nationale
Suprieure dInformatique (ESI), Disponible sur
http://zegour.esi.dz/Cours/Cours_sdd.htm
uveau-programme
.
187
A. Aroussi, Cours dAlgorithmique Avanc, Universit Saad Dahlab de Blida, 2015,
Disponible sur https://sites.google.com/a/esi.dz/s-aroussi/Algorithmique
TYPOLOGIE
Arbre binaire : cest un arbre o le degr maximum dun
nud est gal 2.
Arbre m-aire : un arbre m-aire dordre n est un arbre ou le
degr maximum dun nud est gal n.
Arbre de Recherche Binaire : cest un arbre binaire o la cl
de chaque nud est suprieure celles de ses descendants
gauche, et infrieure celles de ses descendants droits.
B-Arbre : Un arbre B dordre n est un arbre o :
la racine a au moins 2 fils
chaque nud, autre que la racine, a entre n/2 et n fils
tous les nuds feuilles sont au mme niveau 188
REPRSENTATION CONTIGE
Reprsentation Squentielle :
TYPE Tnoeud= STRUCTURE
Info : Typeqq
vide: boolen
FIN
Indice 0 1 2 3 4 5
Info - a b e c d
Vide V F F F F F
- /
a b + e
190
c d
EXEMPLE DAPPLICATION
Reprsentation des Expressions Arithmtiques :
Les diffrentes formes de reprsentation dune expression
193
i div 2 i 2i 2i+1
Pre . Nud . FG FD .
EXEMPLE DAPPLICATION
Reprsentation des Expressions Arithmtiques
(Exercice 04): Procdure Calcul (op: caractre, op1,
op2, res: chaines de caractres)
5. Ecrire les fonctions Var X, Y, Z: entier
Debut
Eval_Infixe(R: *Tnoeud), // convertir les oprandes en entier
X ConvertirChaineEntier(op1);
Eval_Postfixe(R:*Tnoeud Y ConvertirChaineEntier(op2);
//raliser lopration correspondante
), Eval_Prefixe Selon op
Cas +: ZX+Y
(R:*Tnoeud) qui permet Cas -: ZX-Y
dvaluer lexpression Cas *: ZX*Y
Cas /: ZX/Y
arithmtique en utilisant Cas %: ZX%Y
Finselon
le format infix, postfix //convertir le rsultat en chane de
caractre
et prfix, Res ConvertirEntierChaine(Z) 194
Fin
respectivement.