1 pièce(s) jointe(s)
Créer un arbre binaire complet en C
J'ai un gros problème!
Je n'arrive pas à créer un arbre binaire complet de telle sorte que tous les noeuds aient exactement deux fils (un fils de droite, un fils de gauche). Voici celui que je propose. Il ne passe que sur l'ordinateur de ma soeur et pas sur le mien (chose que je ne comprends pas non plus).
Merci de m'aider
Code:
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| #include<stdio.h>
#include<stdlib.h>
#include<string.h>
//etablissons la structure de notre arbre binaire
typedef struct num
{
int valeur;
struct num *fils_gauche;
struct num *fils_droit;
}arbre;
arbre *creerarbre(arbre *A, int x, int n)
{
if (A==NULL)
{
A=(arbre*)malloc(sizeof(arbre));//creation de l'arbre
A->valeur=x; //la racine prend une valeur x
A->fils_gauche=NULL; //le fils de gauche pointe sur null
A->fils_droit=NULL; //le fils de droit pointe sur null
n++; //on incrémente le compteur pour atteindre le nombre de niveau souhaité
};
if (n<=7)
{
A->fils_gauche=creerarbre(A->fils_gauche,0,n); //on appelle la fonction pour creer le sous arbre ayant le fils de gauche comme racine
A->fils_droit=creerarbre(A->fils_droit,1,n);//on appelle la fonction pour creer le sous arbre ayant le fils de droit comme racine
};
return A;
}
void parcoursprefixe(arbre *P)
{
if(P != 0)
{
printf("%d",P->valeur);
parcoursprefixe(P->fils_gauche);
parcoursprefixe(P->fils_droit);
};
}
int main()
{
arbre *R;
R=(arbre*)malloc(sizeof(arbre));
R=creerarbre(R,0,1);
parcoursprefixe(R);
getch();
} |