Application à la gestion d’un ensemble de mots. « Arbres binaires de recherche ». On dispose d’une liste de mots L, par exemple,
L= ( )
On va construire un arbre binaire qui respecte les règles suivantes :
– L’ensemble des nœuds de cet arbre est l’ensemble des mots de L;
– Pour tout sous-arbre Ade cet arbre, si G= (A)et D= (A), alors l’ensemble des mots de G(resp., de
D) précèdent (A)(resp., suivent (A)).
Par exemple, on obtiendra avec la liste Lci-dessus :
abricot
asticot chameau
#
#@
@
banane
!
!
!
!@
@
arbre
chèvre
dindon ours
@
@
lapin
"
"
"@
@
chien
P
P
P
P
P
P
chat
Permet une structure de dictionnaire plus souple que celle de tableau trié (comparer le temps de calcul pour l’insertion d’un élément
dans l’arbre).
Exercice 1 Pour chacune des opérations suivantes, on demande de suivre la démarche algorithmique : (1) définir le profil, (2) traiter
un ou plusieurs exemples, (3) définir des axiomes, (4) traduire ces axiomes en un algorithme récursif :
Q1 (A)est le nombre de nœuds de l’arbre binaire A.
Q2 (A)est le nombre de feuilles de A(c’est-à-dire, le nombre de nœuds sans fils).
Q3 (A)est la profondeur de l’arbre binaire A, c’est-à-dire le nombre maximum de liens de filiations pour relier la racine
à un nœud-feuille (c’est aussi le nombre de générations −1).
Q4 (A1, A2)vaut si et seulement si A1et A2sont deux arbres égaux.
Q5 (A)est un arbre créé de façon à être égal à A.
Q6 (A)est l’arbre obtenu en inversant les fils dans tout l’arbre A.
Q7 (A1, A2)vaut si et seulement si les arbres A1et A2sont égaux modulo des permutations entre fils gauches et fils
droits.
Q8 (A, G)est l’arbre obtenu en substituant au fils gauche de Al’arbre G.
Q9 (A, D)est l’arbre obtenu en substituant au fils droit de Al’arbre D.
Exercice 2 On veut définir des opérations pour la gestion d’un ensemble de mots utilisant des arbres binaires sous la forme d’un type
de nom qui est le type des arbres binaires dont les éléments sont des chaînes de caractères. Les opérations ont les profils
suivants :
:−→ () retourne ∅
:× −→ (x, E)retourne E∪ {x}
:−→ (E)retourne ssi Eest l’ensemble vide
:−→ (E)retourne un élément (quelconque) de E
:× −→ (x, E)retourne E\{x}
Donner une implantation de ces opérations sous la forme d’algorithmes sur les arbres. Si et sont deux chaînes, on notera
6si précède lexicographiquement et =si elles sont égales. Ainsi, 6et =.
Étudier la complexité de ces opérations en fonction de n(le nombre d’éléments de l’arbre) et de p(sa profondeur).
Exercice 3 Les arbres peuvent se représenter de façon similaire aux listes chaînées, mais avec un double chaînage (à gauche et à
droite). Autrement dit, un arbre non vide correspond à un enregistrement à trois champs : un pour la racine, un pour le fils gauche et un
pour le fils droit.
Donner une implantation C du type des arbres de chaînes de caractères.
10.3 Arbres quelconques et forêts
Arbres ternaires : similaires aux arbres binaires (fils numéros 1,2et 3).
Arbres quelconques : on n’a pas de majorant a priori du nombre de fils par nœud.
Structure doublement chaînée : racine, « fils aîné », « frère suivant ».
En fait, structure de forêt. Type abstrait équivalent à celui d’arbre binaire (avec renommages : à la place de ,
à la place de ).
Mais pour les opérations non primitives, pas nécessairement les mêmes axiomes : pour , c’est pareil ; pour et
, c’est différent.
2