Académique Documents
Professionnel Documents
Culture Documents
5.1
Quelques exemples
Expressions arithm
etiques. On represente souvent des expressions
arithmetiques avec des arbres etiquetes par des operateurs, des constantes
et des variables. La structure de larbre elimine les ambiguites qui peuvent
apparatre en fonction des priorites des operateurs et qui sont supprimees
en utilisant des parenth`eses.
59
75
(y/2 t) (75 + z)
Arbres syntaxiques. Un arbre syntaxique represente lanalyse dune
phrase `a partir dun ensemble de r`egles qui constitue la grammaire : une
phrase est composee dun groupe nominal suivi dun groupe verbal, un
groupe nominal peut-etre constitue dun article et dun nom commun,. . .
phrase
groupe nominal
groupe verbal
article
nom commun
verbe
le
chat
lit
complment
article
nom commun
le
livre
Arbres g
en
ealogiques. Un arbre genealogique (descendant dans le
cas present) represente la descendance dune personne ou dun couple. Les
noeuds de larbre sont etiquetes par les membres de la famille et leurs
conjoints. Larborescence est construite `
a partir des liens de parente (les
enfants du couple).
5.2. DEFINITIONS
ET TERMINOLOGIE
61
Georges
Ginette
Paul
Matto
Lilly
Tom
Victor
Naomi
Tho
Lucie
Mlanie
Lon
main
male
mie
mite
pic
pile
pis
port
porte
t
e
l
e
o
s
r
t
e
5.2
D
efinitions et terminologie
D
efinition. Un arbre est un ensemble organise de noeuds dans lequel
chaque noeud a un p`ere et un seul, sauf un noeud que lon appelle la racine.
Si le noeud p est le p`ere du noeud f , nous dirons que f est un fils de p, et
si le noeud p na pas de fils nous dirons que cest une feuille. Chaque noeud
porte une etiquette ou valeur ou cle. On a lhabitude, lorsquon dessine un
feuilles
Un noeud est defini par son etiquette et ses sous-arbres. On peut donc
representer un arbre par un n-uplet e, a1 , . . . , ak dans lesquel e est letiquette
portee par le noeud, et a1 , . . . , ak sont ses sous-arbres. Par exemple larbre
correspondant `a lexpression arithmetique (y/2t)(75+z) sera represente
par
, , /, y, 2, t, +, 75, z
On distingue les arbres binaires des arbres generaux. Leur particularite est que les fils sont singularises : chaque noeud a un fils gauche et un
fils droit. Lun comme lautre peut etre un arbre vide, que lon notera .
Lecriture dun arbre sen trouve modifiee, puisquun noeud a toujours deux
fils. En reprenant lexpression arithmetique precedente, larbre binaire qui
la represente secrit
, , /, y, , , 2, , , t, , , +, 75, , , z, ,
On utilise pour les arbres une terminologie inspiree des liens de parente :
les descendants dun noeud p sont les noeuds qui apparaissent dans
ses sous-arbres,
un ancetre dun noeud p est soit son p`ere, soit un ancetre de son p`ere,
le chemin qui relie un noeud `
a la racine est constitue de tous ses
ancetres (cest-`
a-dire de son p`ere et des noeuds du chemin qui relie
son p`ere `a la racine),
un fr`ere dun noeud p est un fils du p`ere de p, et qui nest pas p.
5.2. DEFINITIONS
ET TERMINOLOGIE
racine
63
niveaux
noeud de degr 3
chemin la racine
ancetre
hauteur=5
profondeur=2
descendant
frre
racine
1
4
8
16
nombre de noeuds
i=0
2i = 2h 1
5.3
Arbres binaires
65
a>fg
a>fg>fd
12
1
1
7
67
91
91
67
82
82
14
14
11
11
Dans ce schema lexploration descend dabord visiter les noeuds les plus `
a
gauche : on parle de parcours en profondeur dabord. On distingue le parcours
prefixe, le parcours infixe et le parcours postfixe. La dierence entre ces
parcours tient uniquement `
a lordre dans lequel sont traites les noeuds du
sous-arbre gauche, le noeud courant, et les noeuds du sous-arbre droit.
Parcours pr
efixe : la valeur du noeud courant est traitee avant les
valeurs figurant dans ses sous-arbres. Si le traitement consiste simplement `
a
acher la valeur du noeud, le parcours prefixe du larbre ci-dessous produirait lachage 12 1 91 67 7 82 61.
void ParcoursPrefixe(ARBRE a)
{
if (a != NULL)
{
TraiterLaValeur (a->val);
ParcoursPrefixe (a->fg);
ParcoursPrefixe (a->fd);
}
}
12
91
7
4
67
82
7
61
Parcours infixe : la valeur du noeud courant est traitee apr`es les valeurs
figurant dans son sous-arbre gauche et avant les valeurs figurant dans son
sous-arbre droit.
67
4
void ParcoursInfixe(ARBRE a)
{
if (a != NULL)
{
ParcoursInfixe (a->fg);
TraiterLaValeur (a->val);
ParcoursInfixe (a->fd);
}
}
12
2
91
67
82
6
61
91 1 67 12 7 61 82
Parcours postfix
e : la valeur du noeud courant est traitee apr`es les
valeurs de ses sous-arbres.
12
3
7
5
91
67
82
4
61
91 67 1 61 82 7 12
5.4
Un arbre binaire de recherche (ou ABR) est une structure de donnee qui
permet de representer un ensemble de valeurs si lon dispose dune relation
dordre sur ces valeurs. Les operations caracteristiques sur les arbres binaires
de recherche sont linsertion, la suppression, et la recherche dune valeur.
Ces operations sont peu co
uteuses si larbre nest pas trop desequilibre.
Soit E un ensemble muni dune relation dordre, et soit A un arbre binaire
portant des valeurs de E. Larbre A est un arbre binaire de recherche si pour
tout noeud p de A, la valeur de p est plus grande que les valeurs figurant
dans son sous-arbre gauche et plus petite que les valeurs figurant dans son
sous-arbre droit.
valeurs infrieures 34
p
34
66
22
29
7
17
32
25
21
23
28
16
50
36
27
44
35
55
81
68
67
52
26
70
56
37
30
71
80
69
97
94
88
51
valeurs comprises
entre 22 et 29
Pour acceder `a la cle la plus petite (resp. la plus grande) dans un ABR
il sut de descendre sur le fils gauche (resp. sur le fils droit) autant que
possible. Le dernier noeud visite, qui na pas de fils gauche (resp. droit),
porte la valeur la plus petite (resp. la plus grande) de larbre.
Le parcours infixe de larbre produit la suite ordonnee des cles
16
34
7
66
22
1
13
7
9
21
9
2
70
56
81
12
23
28
16
37
32
6 8
71
15
25
17
3
50
29
5
27
11
30 14
36
44
55
68
80
97
17
35
52
67
69
94
10
26
51
7 8 9 16 17 21 22 23 25 26 27 28 29 30 32 34 35 36 37 ...
88
69
recherche de la valeur 27
34
<34
22
66
>22
29
71
50
<29
25
17
32
70
56
37
81
>25
9
21
23
28
36
30
44
55
68
80
97
<28
8
16
27
26
35
52
67
51
69
94
88
22
7
29
17
9
25
21
23
16
29
17
32
28
30
27
25
21
23
16
32
28
30
31
27
26
26
66 a un fils droit :
son successeur est 67
dernier fils gauche de
son sousarbre gauche
34
22
66
29
7
25
17
9
8
16
21
23
32
28
27
26
71
50
37
36
30
31
35
56
44
55
52
51
70
80
68
67
81
69
97
94
88
71
66
66
50
56
37
36
71
44
55
52
35
81
70
68
67
50
80
69
71
56
37
97
94
36
44
35
55
52
81
70
68
67
80
69
94
88
51
97
88
suppression de la valeur 51
66
66
71
50
56
37
36
35
44
55
52
70
81
80
68
67
50
69
37
97
94
88
51
71
36
35
44
56
52
51
70
68
67
81
80
69
97
94
88
suppression de 55
66
50
37
36
35
56
44
50
76
55
52
51
81
70
68
73
72
71
80
56
37
97
36
94
44
35
88
73
55
52
70
68
81
72
71
80
97
94
88
51
Cas 3 : le noeud a` supprimer p a deux fils. Soit q le noeud de son sousarbre gauche qui a la valeur la plus grande (on peut prendre indieremment
le noeud de son sous-arbre droit de valeur la plus petite). Il sut de recopier
la valeur de q dans le noeud p et de decrocher le noeud q. Puisque le noeud
q a la valeur la plus grande dans le fils gauche, il na donc pas de fils droit,
et peut etre decroche comme on la fait dans les cas 1 et 2.
5.5
Arbres g
en
eraux ou n-aires
Un arbre n-aire est un arbre dans lequel le nombre de fils dun noeud
nest pas limite. On les represente avec des pointeurs, en liant les fils dun
meme noeud entre eux, comme dans une liste chainee. Ainsi, `
a partir dun
noeud quelconque, on acc`ede `
a son fils aine (la liste de ses fils) et `
a son fr`ere.
racine
fils ain
frres
.....
a1
a2
ak
5.6. EXERCICES
73
5.6
Exercices
Les arbres lexicographiques, ou arbres en parties communes, ou dictionnaires, sont un exemple darbres n-aires. Ils sont utilises pour representer
un ensemble de mots, en optimisant lespace memoire occupe. Le principe
consiste `a representer une seule fois les prefixes communs `
a plusieurs mots.
Pour eliminer toute ambiguite lorsquun mot est le prefixe dun autre, on
signale les fins des mots `a laide dun caract`ere particulier (* dans la figure
ci-dessous, mais en C le caract`ere de fin de chane \0 est tout `
a fait
adapte).
racine
*