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
Bonjour,
je veux bien savoir comment puis-je faire le parcours d'un arbre N-air.
y-t-il quelqu'un qui peux me donner le code en langage C?! et merci

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
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 :
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
0