Langage C
combe_6
Messages postés
30
Statut
Membre
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
comment supprimer un nombre dans un arbre binaire de recherche grace à une procédure avec comme argument arbre a,int v
arbre est type
comment supprimer un nombre dans un arbre binaire de recherche grace à une procédure avec comme argument arbre a,int v
arbre est type
2 réponses
-
-
la procédure insérer me permet d'avoir un arbre binaire de recherche et maintenant j'ai besoin d'une autre procédure qui me permettra de supprimer une valeur dans l'arbre cette valeur étant donné par l'utilisateur
Voici le code
#include <stdio.h>
#include <stdlib.h>
struct noeud{
int valeur;
struct noeud* fg;
struct noeud* fd;
};
typedef struct noeud* arbre;
void Inserer(arbre *A,int v)
{
if(*A==NULL)
{
*A=(arbre)malloc(sizeof (struct noeud));
(*A)->valeur=v;
(*A)->fg=NULL;
(*A)->fd=NULL;
}
else if(v<=(*A)->valeur)
Inserer(&(*A)->fg,v);
else
Inserer(&(*A)->fd,v);
}
void parcoursPrefixe(arbre A)//affiche les valeurs de l'arbre
{
if(A!=NULL)
{
printf("%d ",(*A).valeur);
parcoursPrefixe((*A).fg);
parcoursPrefixe((*A).fd);
}
}
int main()
{
int n,i,m,v,k,p;
arbre A=NULL;
printf("saisir le nombre d'element de l'arbre\n");
scanf("%d",&n);
fflush(stdin);
for(i=1;i<=n;i++)
{
printf("donner le %d element ",i);
scanf("%d",&m);
Inserer(&A,m);
}
parcoursPrefixe(A);
printf("entrer le nombre a supprimer");
scanf("%d",&p);
supprimer(&A,p);//g besoin de cette procédure pour pouvoir supprimer
parcoursPrefixe(A);
getch ();
return 0;
}
aprés avoir supprimer j'affiche l'arbre pour voir si le nombre a été bien supprimer
j'espère avoir été claire-
pour supprimer, il faut recoller les noeud à gauche et à droite, et libérer la mémoire. La première étape est bien entendu de parcourir l'arbre jusqu'à la valeur que tu cherches.
comme tu n'as pas de point d'entré fixe, avant il faut "rembobiner" ta structure, c'est à dire aller tout à gauche, puis parcourir vers la droite et s'arreter lorsque tu as la valeur souhaitée.
Voilà l'algorithme, à toi d'écrire les fonctions. Redemande si tu buttes.
-