From e945a5c813cf17f669a97bcecf6e10d442f9a045 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sat, 1 Apr 2017 13:40:21 +0200 Subject: [PATCH] TP6 n-ary tree: implement a proper freeing function for this kind if tree MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- TP6/arbres/arbre-n-aire/arbre_n_aire.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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 */ } -- 2.34.1