Bonjour,
je manipule un arbre binaire et, à mon grand regret, je n'arrive pas à en supprimer une partie. Voila mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.