TP6 n-ary tree: implement a proper freeing function for this kind if
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Sat, 1 Apr 2017 11:40:21 +0000 (13:40 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Sat, 1 Apr 2017 11:40:21 +0000 (13:40 +0200)
tree

Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
TP6/arbres/arbre-n-aire/arbre_n_aire.c

index fecc499895928027db32545eda2180b58f1b49b7..e8b32016e734782c2f7bddf889c4275cc3a203f8 100644 (file)
@@ -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 */
 }