On considère la déclaration suivante de la structure classique d'un arbre lexicographique.
struct noeud typedef struct noeud Noeud; /* nouveau type : Noeud */ typedef Noeud * Arbre; /* pointeur sur un Noeud */ |
![]() |
Un arbre est un arbre lexicographique si les conditions suivantes
sont
vérifiées :
- à chaque noeud
on associe une lettre,
- chaque chemin allant de
la racine à une feuille correspond à un mot,
- un préfixe commun
à plusieurs mots de l'arbre n'apparaît qu'une fois dans
l'arbre.
Noeud * CreerFeuille(char c) qui retournera un pointeur sur un noeud contenant le caractère passé en argument, int EstFeuille (Arbre a) qui testera si le noeud pointé par a est une feuille, int EstVide (Arbre a) qui testera si l'arbre pointé par a est vide, int DetruireNoeud (Noeud * n) qui libère l'espace mémoire associé au noeud n. Renvoie 1 si la libération s'est effectuée sans problème, 0 sinon.
Ecrire une fonction Lecture prenant en argument un pointeur sur un fichier f et un arbre lexicographique a, et qui insère les mots de f dans l'arbre a.
Exercice 4- Affichage
Écrire une fonction AffichageMots affichant tous les mots contenus dans un arbre lexicographique passé en argument.
Exercice 5- Sauvegarde dans un fichier
Ecrire une fonction Sauvegarde prenant en argument un pointeur sur un fichier f et un arbre lexicographique a et qui écrit tous les mots de l'arbre a dans le fichier f.
Exercice 6- Recherche d'un mot
Écrire une fonction Appartient qui renvoie 1 si le mot mot passé en argument appartient à l'arbre lexicographique a, 0 sinon.
Exercice 7- Recherches sous contrainte