|
|
|
|
Bonjour,
Voilà je suis en train d'apprendre la recursivité et j'ai quelques problèmes.
J'aimerai faire une fonction qui calcul approximativement la taille d'un arbre.
Je dit approximativement parce que le nombre exacte importe peu vu que je ferai appel à cette fonction pour calculer la taille de deux arbres et savoir qui est le plus grand.
Voici ce que je propose mais j'ai du mal à savoir si sa peut fonctionner. Je ne peux pas tester pour le moment le code sur machine. Dite moi ce que vous pensez de mon code : Ps on envoie 0 pour le compteur.
int Taille_arbre ( Noeud *racine , int compteur)
{
if( racine != NULL )
{
compteur = compteur + 1;
compteur = Taille_arbre( racine->fils_G , compteur);
compteur = Taille_arbre( racine->fils_D , compteur);
}
return compteur;
}
Merci d'avance pour vos réponses.
Configuration: Linux Firefox 3.0.6
Ta fonction retourne un int comme elle le doit, alors pense du cas ou l'arbre vaut NULL , elle ne retourne rien ? ça te retounera un warning pas très grave mais c'est mieux de le mettre.
int Taille_arbre(Noeud *racine){ //pas besoin de mettre compteur en paramètre,
if(!racine)
return 0;
else{ //ici le noeud existe donc ca compte pour un 1
return (1+Taille_arbre(racine->gauche)+Taille_arbre(racine->droite) );
}
}
|
Merci. Je ne connaissais pas la structure type pour une fonction recursive. La ligne qui suit le else est également trés intéressante je n'y avais pas pensé.
|