Chap 2
Chap 2
Chap 2
Arbres
Un arbre est une structure de données organisées de façon
hiérarchique, à partir d’un nœud distingué appelé racine.
Très importante en informatique : Arbre de jeux (i.e., Echecs ),
système de fichiers UNIX/Windows, Arbres de tri
Expressions Arithmétiques
L’expression A - (B + C * (D - E)) * F
se représente facilement par un arbre où apparaît
clairement la priorité des opérations:
noeuds
arêtes
A. Naceur Turki Algorithmique et structures de données 4
Arbres: définitions
Les arbres sont enracinés. Une fois la racine définit tous les
nœuds admettent un niveau.
Les arbres ont des nœuds internes et des feuilles (nœuds
externes). Chaque nœud (à l’exception de la racine) a un parent
et admet zéro ou plusieurs fils.
racine
niveau 0
niveau 1 nœuds internes
niveau 2
parent
niveau 3 et
A. Naceur Turki Algorithmique et structures de données
feuilles fils 5
Arbres: définitions
Taille de l’arbre: est le nombre de nœuds qu’il possède.
Degré d’un nœud: est le nombre de ses fils.
Degré d’un arbre: est le degré maximum de ses nœuds.
Hauteur d’un nœud: est la longueur du plus long chemin de ce
nœud aux feuilles qui en dépendent plus 1.
C’est le nombre de nœuds du chemin.
La hauteur d’un arbre est la hauteur de sa racine.
L’arbre vide a une hauteur 0.
L’arbre réduit à une racine étiqueté a une hauteur 1.
Profondeur d’un nœud: est le nombre de nœuds du chemin qui
va de la racine à ce nœud
A. Naceur Turki Algorithmique et structures de données 6
Arbres: 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 priorité 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 inferieures
(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 (inferieure resp.) à la
valeur de ses fils. On parle ici du TASmax (TASmin)
La propriété
A. Naceur Turki d’équilibrage:
Algorithmique etoù lesdefeuilles
structures données se situent aux derniers
7
1 2 3 4 5 6 7 8 9 10 11
tab A: 14 10 16 8 12 15 18 7 9 11 13
A. Naceur Turki Algorithmique et structures de données 10
Arbres Binaires: Représentation par
pointeurs
Nœud= enregistrement
val : entier
FG : ^ Nœud
FD : ^ Nœud
Fin enregistrement
Arbre : ^ Nœud
• Visiter la racine
• Visiter le sous-arbre gauche en PréOrdre
• Visiter le sous-arbre droit en PréOrdre
Inordre :
i, c, j, b, e, a, g, f, h
Postordre:
i, j, c, e, b, g, h, f, a.
10 16
8 11 15
A. Naceur Turki Algorithmique et structures de données 24
ABR: InOrdre
Exemple:
InOrdre visites :
14
(8)
(10)
10 16 (11)
(14)
8 11 15 18
(15)
(16)
(18)
NOTER ! Le parcours InOrdre visite les clés dans l’ordre croissant.
A. Naceur Turki Algorithmique et structures de données 25
ABR : Rechercher un élément
Soit un ABR :
G D
2 5
Ajout de : A B C L M Ajout de : C A B L M
A
C
B
A L
C
L B M
A. Naceur Turki Algorithmique et structures de données 30
M
ABR : Supprimer un élément
Pour supprimer un nœud dans un ABR, plusieurs cas de figure
peuvent se présenter. Il est toutefois nécessaire d’obtenir un ABR à
l’issue de la suppression.
D’abord il faut chercher l’élément à supprimer, une fois trouvé on
se trouve dans l’une des situations suivantes, soit « x » le nœud à
supprimer:
1er cas : x est une feuille : on la supprime et on la remplace par Nil.
2eme cas : x est un nœud qui a un seul fils : on supprime x et on le
remplace par ce fils.
3eme cas : x est un nœud qui a deux fils : on supprime x et on le
remplace par l’élément minimum se trouvant dans son sous arbre droit
(le nœud le plus à gauche du sous arbre droit)ou par l’élément
A.maximum
Naceur Turki se trouvant Algorithmique
dans son données gauche (le nœud le plus
sousde arbre
et structures 31 à
droite du sous arbre gauche).
ABR : Supprimer un élément
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
A. Naceur Turki Algorithmique et structures de données 32
52
ABR : Supprimer un élément
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 iavec le FD(i)
3. Libérer le nœud «i» 15 59
5 27 71
3 10 33
«i »
12 55
5 71
3 10 33
55
8
A. Naceur Turki Algorithmique et structures de données 34
52
ABR : Supprimer un élément
Cas 3: suppression d’un nœud avec 2 fils
3. Supprimer le nœud « P »