Arbre Lexicographique

Résolu
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 13 déc. 2006 à 18:08
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 14 déc. 2006 à 00:10
Bonjour a tous,
voila en fait j'ai un exercice d'algorithmique ou je dois créé un arbre l'exicographique, voici la structure de ma classe:

class ArbreLexico
{
    private:
        class Noeud
        {
            private:
                char info;
                bool fin;
                ArbreLexico *fils[26];

            public:
                Noeud( void )
                {
                    int i;

                    fin = true;

                    for(i=0; i < 26; i++)
                        fils[i] = NULL;
                }
               
                Noeud( char val )
                {
                    int i;

                    fin = true;

                    for(i=0; i < 26; i++)
                        fils[i] = NULL;

                    info = val;
                }

                Noeud( char val, bool f )
                {
                    int i;

                    fin = f;

                    for(i=0; i < 26; i++)
                        fils[i] = NULL;

                    info = val;
                }

                char getVal()
                { return( info ); }
               
                void setVal( char val )
                { info = val; }

                void setFils( int i, ArbreLexico *a )
                { fils[i] = a; }

                void setFin( bool val )
                { fin = val; }

                ArbreLexico *getFils( int i )
                { return( fils[i] ); }

                bool getFin()
                { return(fin); }
        };
        Noeud *arb;

    public:
        ArbreLexico( void );
        ArbreLexico( char *v );
        void add( char *v );
        void aff( void );
        bool rechercher( char *u );
};

alors pour ajouter un mot dans l'arbre, aucun problème, pour rechercher si un mot existe aucun problème non plus.
la ou ca coince, c'est pour afficher les mots qu'il y a dans l'arbre. je ne vois pas comment pouvoir afficher tous les mots contenu dans l'arbre.
j'aimerais que vous me donniez quelques piste pour pouvoir faire l'affichage des mots contenue dans l'abre parce que la je séche total.
Merci par avance.
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."

7 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
13 déc. 2006 à 22:06
Je pense pas qu'il y ait besoin de ca. Voila ce que je ferais, a quelques erreurs près:

int p = 0;
char buffer[MAX_LONGUEUR_MOT];

void aff( void )
{
  if(getFin())
  {
    buffer[p] = 0;
    puts(buffer);
  }

  else for(int i = 0; i < 26; i++)
  {
    if(fils[i])
    {
      buffer[p++] = i + 'a';
      fils[i]->aff();
      p--;
    }
  }
}

_____________________________________
Un éditeur de ressources gratuit pour Windows
3