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 -
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
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:
- Langage C
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
2 réponses
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.
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
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.
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.