/* Insertion d'un mot dans l'arbre ******************************************/
/* (on respecte l'ordre lexicographique des freres)**************************/
-NOEUD *_insere(NOEUD * p, char *mot, int i)
+NOEUD *insere(NOEUD * p, char *mot, int i)
{
/* i est l'indice de la lettre courante dans le mot */
if (p == NULL) {
return insere_fin(mot, i);
+ } else if (p->lettre == mot[i]) {
+ if (mot[i]) {
+ p->fils = insere(p->fils, mot, i + 1);
+ } else {
+ printf("The word is already here\n");
+ }
+ } else if (p->lettre > mot[i]) {
+ NOEUD *p1 = insere_fin(mot, i);
+ p1->frere = p;
+ p = p1;
+ } else {
+ p->frere = insere(p->frere, mot, i);
}
- if (mot[i] > p->lettre) {
- return _insere(p->frere, mot, i);
- } else if (mot[i] == p->lettre) {
- return _insere(p->fils, mot, i + 1);
- } else if (mot[i] < p->lettre) {
- return _insere(p->fils, mot, i);
- }
-}
-
-NOEUD *insere(NOEUD * p, char *mot, int i)
-{
- p = _insere(p, mot, i);
return p;
}
+
/*****************************************************************************/
/* Affichage par ordre alphabetique de tous les mots stockes dans l'arbre */
void affiche(NOEUD * p, char *mot, int i)