Bonjour,
J'ai un arbre ternaire de recherche et je voudrai supprimer un mot dans cet arbre.
Voilà ce que j'ai fais mais ça ne marche pas pour tous les mots:
/* Structure ATR(Arbre Ternaire de recherche) */
typedef struct tnode *Tptr;
typedef struct tnode {
char etiq;
Tptr FG, FM, FD;
}Tnode;
/* Donne la premiere lettre d'un mot */
char premier(char * s) {
return s[0];
}
/* Donne le mot sans sa premiere lettre */
char * suite(char * s) {
s = s++; /* pour s soit modifier */
return s;
}
Tptr Supprime(Tptr p, char * s, Tptr sauvpos) {
if(p == NULL)
return;
if(p->FG || p->FD)
sauvpos = p;
if(p->etiq == premier(s) && premier(s) != '\0')
Supprime(p->FM, suite(s), sauvpos);
else
if(premier(s) < p->etiq && premier(s) != '\0')
Supprime(p->FG, s, sauvpos);
else
if(premier(s) > p->etiq && premier(s) != '\0')
Supprime(p->FD, s, sauvpos);
if(p != sauvpos && ok == 0)
free(p);
else
if(ok == 0) {
ok = 1;
if(p->FG)
*p = *(p->FG);
else
if(p->FD)
*p = *(p->FD);
else
free(p);
}
}
Alors si quelqu'un voit mes erreurs qu'il me le dise.
Merci d'avance
