suppression d'un arbre binaire
Bonjour,
je manipule un arbre binaire et, à mon grand regret, je n'arrive pas à en supprimer une partie. Voila mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
//voila le type de l'arbre:
struct noeud
{
int val;
struct noeud * G;
struct noeud * D;
};
typedef struct noeud Noeud;
typedef struct noeud * ptr;
//voila ma fonction SupprArbre:
void SupprArbre (ptr *A)
{
ptr x=*A;
if(!ptrVide(*A))
{
ptr p;
p=FilsGauche(*A);SupprArbre(&p);
p=FilsDroit(*A);SupprArbre(&p);
free(x);
x=NULL;
}
}
//voila la partie de code ki me turlupine:
printf("r avant:\n");
AffArbre(r);
getchar();
SupprArbre(&r);
printf("r apres:\n");
AffArbre(r);
getchar(); |
En effet, lors de l'affichage de l'arbre r, ben c'est exactement la même chose qui est affichée! Moi, je souhaiterais qu'après l'appel de la fonction SupprArbre, l'arbre r soit à NULL et que l'espace mémoire qui était alloué à partir de r soit libéré bien sur.
Merci.