Langage C

combe_6 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 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



A voir également:

2 réponses

combe_6 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
aidez moi svp
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
on veux bien t'aider, mais soit plus précis : donne ton arbre au moins, et ce que tu veux faire exactement.
0
combe_6 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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.
0