TP4 - Arbre lexicographique

Informatique - Deug S4 MIAS



L'objet de cette feuille d'exercices est l'implémentation des opérations de base sur une nouvelle structure de données récursive : la structure d' arbre Lexicographique généralisé.
Nous utilisons ici cette structure pour construire un dictionnaire. Nous voulons être capable d'y rechercher un mot de manière efficace.

On considère la déclaration suivante de la structure classique d'un arbre lexicographique.

struct noeud
{
    char Lettre;
    struct noeud * FilsGauche;
    struct noeud * FrereDroit;
};

typedef struct noeud Noeud;     /* nouveau type : Noeud                */

typedef Noeud * Arbre;              /* pointeur sur un Noeud               */
arbreLex


 
 

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.




Exercice 1- Fonctions de base
Afin de pouvoir manipuler un arbre lexicographique, nous demandons d'écrire les fonctions élémentaires suivantes :
  • 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.


  • Exercice 2- Insertion.
     
    Exercice 3- Lecture dans un fichier

                    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