From: Jérôme Benoit Date: Sat, 1 Apr 2017 11:40:21 +0000 (+0200) Subject: TP6 n-ary tree: implement a proper freeing function for this kind if X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=e945a5c813cf17f669a97bcecf6e10d442f9a045;p=Algorithmic_C.git TP6 n-ary tree: implement a proper freeing function for this kind if tree Signed-off-by: Jérôme Benoit --- diff --git a/TP6/arbres/arbre-n-aire/arbre_n_aire.c b/TP6/arbres/arbre-n-aire/arbre_n_aire.c index fecc499..e8b3201 100644 --- a/TP6/arbres/arbre-n-aire/arbre_n_aire.c +++ b/TP6/arbres/arbre-n-aire/arbre_n_aire.c @@ -110,6 +110,20 @@ NOEUD *supprime(NOEUD * p, char *mot, int i) return p; } +/* Destruction des arbres de racine p en recuperant la place occupee (free) par chacun des noeuds */ +NOEUD *detruis_arbre(NOEUD * p) +{ + if (p == NULL) + return p; + else { + p->fils = detruis_arbre(p->fils); + p->frere = detruis_arbre(p->frere); + free(p); + p = NULL; + return p; + } +} + /* Chargement des mots d'un fichier (vu comme un dictionnaire) dans l'arbre **/ NOEUD *charge_dico(char *nom_fichier, int *nb_mots) { @@ -170,7 +184,7 @@ int main(int argc, char *argv[]) affiche_arbre(arbre, 0); if (recherche(arbre, "salut", 0)) printf("mot \"salut\" present\n"); - free(arbre); + detruis_arbre(arbre); /* TODO */ }