slt tt le monde!
voila je veux implementer un arbre ( en c )ou chaque noeud a 4 fils
donc j'ai utiliser la structure suivante:
Code:
typedef struct noeud
{
double X;
struct noeud *ptr1,*ptr2,*ptr3,*ptr4;
} NOEUD,*POINTEUR;
et ou les deux premiers noeuds ont pour valeur la valeur du noeud pere +1 et les deux derniers noeuds, la valeurs du noeud pere -1.
mon probleme est le suivant:
quand j'execute mon code ( voir code ci-dessous ) mon programme ne developpe a chaque iteration que le derniers pointeur sauf pour les 4 premiers fils, je sais que le probleme doit etre au niveau de la fonction insertion(...), mais je ne sais pas quoi modifier pour que ça marche
merci d'avance pour votre aide !
Code:
#include <iostream>
#include <cstdlib>
typedef struct noeud
{
double X;
struct noeud *ptr1,*ptr2,*ptr3,*ptr4;
} NOEUD,*POINTEUR;
POINTEUR alloc(double x,POINTEUR p1,POINTEUR p2,POINTEUR p3,POINTEUR p4)
{
POINTEUR p=(POINTEUR)malloc(sizeof(NOEUD));
p->X=x;
p->ptr1=p1;
p->ptr2=p2;
p->ptr3=p3;
p->ptr4=p4;
return p;
}
POINTEUR insertion( POINTEUR r,double X)
{
if(r==NULL)
r=alloc(X,NULL,NULL,NULL,NULL);
else
{
if(r->ptr1==NULL)
r->ptr1=insertion(r->ptr1,X+1);
else if(r->ptr2==NULL)
r->ptr2=insertion(r->ptr2,X+1);
else if(r->ptr3==NULL)
r->ptr3=insertion(r->ptr3,X-1);
else
r->ptr4=insertion(r->ptr4,X-1);
}
return r;
}
void parcours(POINTEUR r);
void main()
{
POINTEUR racine=NULL;
double Xu=0;
for(int i=0;i<15;i++)
racine=insertion(racine,Xu);
parcours(racine);
}
//// Parcours de l'arbre en pré-ordre et Affichage du resultat
void parcours(POINTEUR r)
{
if(r!=NULL)
{
printf("\n %f",r->X);
parcours(r->ptr1);
parcours(r->ptr2);
parcours(r->ptr3);
parcours(r->ptr4);
}
}