Probleme en C
Résolu/Fermé
aderiano
Messages postés
6
Date d'inscription
vendredi 16 janvier 2009
Statut
Membre
Dernière intervention
21 janvier 2009
-
18 janv. 2009 à 23:52
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 19 janv. 2009 à 02:40
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 19 janv. 2009 à 02:40
1 réponse
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
19 janv. 2009 à 02:40
19 janv. 2009 à 02:40
Difficile de te répondre comme ça, ça dépend beaucoup de ta structure d'arbre (notamment comment sont stockés les successeurs d'un noeud). Ceci revient à traduire dans ce qui suit le "pour chaque successeur(noeud)".Le plus simple reste quand même de faire un appel récursif. Voici en pseudo code un parcours :
Si le parcours est sensé modifier une même variable pour chaque appel, attention à passer un pointeur vers cette variable. Par exemple si ta fonction de parcours doit compter le nombre de noeuds :
Bonne chance
void parcours(const noeud_t noeud){ // traiter noeud; pour chaque successeur(noeud){ parcours(successeur); } } int main(){ noeud_t racine = creer_arbre(); // compléter l'arbre parcours(racine); return 0; }
Si le parcours est sensé modifier une même variable pour chaque appel, attention à passer un pointeur vers cette variable. Par exemple si ta fonction de parcours doit compter le nombre de noeuds :
void parcours(const noeud_t noeud,unsigned *n){ ++ *n; pour chaque successeur(noeud){ parcours(successeur,n); } } int main(){ noeud_t racine = creer_arbre(); unsigned n = 0; // compléter l'arbre parcours(racine,&n); return 0; }
Bonne chance