Bonjour,
je manipule un arbre binaire et, à mon grand regret, je n'arrive pas à en supprimer une partie. Voila mon code :
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.
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();
Merci.
Partager