/* Visualisation de l'arbre n-aire *******************************************/
void affiche_arbre(NOEUD * p, int prof)
-/* prof est utilise pour decaller l'affichage avec des espaces (selon le niveau dans l'arbre) */
+/* prof est utilise pour decaller l'affichage avec des espaces (selon le niveau dans l'arbre) */
{
int i;
NOEUD *supprime(NOEUD * p, char *mot, int i)
/* i est l'indice de la lettre courante dans le mot */
{
- /* TODO */
- return p;
+ if (p) {
+ if (p->lettre < mot[i]) {
+ p->frere = supprime(p->frere, mot, i);
+ } else if (p->lettre == mot[i]) {
+ p->fils = supprime(p->fils, mot, i + 1);
+ if (!p->fils) {
+ NOEUD *p1 = p;
+ p = p->frere;
+ free(p1);
+ }
+ return p;
+ }
+ }
}
/* Destruction des arbres de racine p en recuperant la place occupee (free) par chacun des noeuds */
if (recherche(arbre, "salut", 0))
printf("mot \"salut\" present\n");
sauve_dico(arbre, "dictionnaire_debug", nb_mots);
+ supprime(arbre, "zazou", 0);
+ affiche_arbre(arbre, 0);
detruis_arbre(arbre);
if (!arbre)
affiche_arbre(arbre, 0);