Affichage d'un arbre binaire avec sa structure
Bonsoirs , j'ai réalisé un arbre binaire de recherche et je veux l'afficher sous cette forme
1
/ \
2 3
/ \ \
4 5 6
/ \ /
7 8 9
je me suis cassé la tête mais aucune solution j'aimerai bien que vous m’aidiez en C (précisément) et merci d'avance
voici une partie du code
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| #include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
typedef struct noeud{
int val;
struct noeud *g;
struct noeud *d;
}noeud_a;
noeud_a *nouveauNoeud(int e)
{
noeud_a *n = (noeud_a*)malloc(sizeof(noeud_a));
n->d=NULL;
n->g=NULL;
n->val=e;
return n;
}
noeud_a *creeArbreBinaire(int e)
{
noeud_a *n=nouveauNoeud(e);
printf("voulez vous ajouter un fils gauche ? (o/n) oui- > entier || non -> -1 \n");
scanf("%d",&e);
if(e!=-1) n->g = creeArbreBinaire(e);
else n->g=NULL;
printf("voulez vous ajouter un fils droit ? (o/n) oui- > entier || non -> -1 \n");
if(e!=-1) n->d=creeArbreBinaire(e);
else n->d=NULL;
return n;
}
noeud_a *insertionArbreBiniare(noeud_a *racine,int e)
{
if(racine==NULL) return nouveauNoeud(e);
if(e>racine->val) racine->d=insertionArbreBiniare(racine->d,e);
else if(e<racine->val) racine->g=insertionArbreBiniare(racine->g,e);
return racine;
}
void afficher(noeud_a *racine)
{
if(racine==NULL) return ;
if(racine!=NULL) printf("%d ",racine->val);
if(racine->g!=NULL) afficher(racine->g);
if(racine->d!=NULL) afficher(racine->d);
}
int main(void)
{
printf(" voici l'arbre de recherche \n");
noeud_a *racine=NULL;
racine =insertionArbreBiniare(racine,15);
racine =insertionArbreBiniare(racine,10);
racine =insertionArbreBiniare(racine,20);
racine =insertionArbreBiniare(racine,3);
racine =insertionArbreBiniare(racine,13);
racine =insertionArbreBiniare(racine,18);
racine =insertionArbreBiniare(racine,22);
afficher(racine);
return 0;
} |