probleme parcours d'un arbre par couche et affichage
Bonjour à tous ,
Je bosse actuellement sur un projet de développement en rapport avec les poisson , bref ça on s'en fou :)
J'ai besoin d'aide en ce qui concerne l'affichage d'un arbre par niveau ou couche
voici mon code pour afficher
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
| void plargeur(Tree * a)
{
// if(a==NULL)
// {
// return ;
// }
File **f;
file_enqueue(f,a->root);
while(f!=NULL)
{
Tree *e;double noeud=0;
noeud= file_dequeue(f);
printf("%f\n",noeud);
if(e->left_child!=NULL)
{
file_enqueue(f,(e->left_child)->root);
}
if(e->right_child!=NULL)
{
file_enqueue(f,(e->right_child)->root);
}
}
} |
et voici le code qui gere la file (pour parcourir l'arbre)
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
| #include <iostream>
#include <string>
using namespace std;
typedef struct File
{
double donnee;
struct File *suivant;
} File;
void file_enqueue(File **p_file,double donnee)
{
File * p_nouveau =( File *) malloc(sizeof (File));
if (p_nouveau != NULL)
{printf("prout\n");
p_nouveau->suivant = NULL;
p_nouveau->donnee = donnee;
if (*p_file == NULL)
{
*p_file = p_nouveau;
}
else
{
File *p_tmp = *p_file;
while (p_tmp->suivant != NULL)
{
p_tmp = p_tmp->suivant;
}
p_tmp->suivant = p_nouveau;
}
}
}
double file_dequeue(File **p_file)
{
double ret = -1;
/* On teste si la file n'est pas vide. */
if (*p_file != NULL)
{
/* Création d'un élément temporaire pointant vers le deuxième élément de la file. */
File *p_tmp = (*p_file)->suivant;
/* Valeur à retourner */
ret = (*p_file)->donnee;
/* Effacement du premier élément. */
free(*p_file), *p_file = NULL;
/* On fait pointer la file vers le deuxième élément. */
*p_file = p_tmp;
}
return ret;
} |
L'erreur est une erreur de segmentation , l'erreur vient peut-etre du pointeur File ** f qui n'est pas init je ne sais pas j'attend votre aide merci à tous :)