Langage C : fonction calcul hauteur maximale arbre [Résolu]

Signaler
Messages postés
4
Date d'inscription
vendredi 24 mars 2006
Statut
Membre
Dernière intervention
8 avril 2006
-
Messages postés
4
Date d'inscription
vendredi 24 mars 2006
Statut
Membre
Dernière intervention
8 avril 2006
-
Bonjour à tous,



je suis novice dans le programmation en C et j'ai besoin de votre aide
car il me faut une fonction, qui calcule la hauteur maximale d'un arbre
(un nb entier de branches). Sachant que cette hauteur max peut se
trouver n'importe ou ! J'ai essayé de faire de cette façon :

void hauteur(pnoeud arbre, int max, int *compteur){
int*l=0;
if(arbre != NULL){

hauteur(arbre->fg,max,&(compteur+l);
l=compteur;
if(l>max)
max=l;
hauteur(arbre->fd,max,&(compteur-1));

}
}
mais je suis quasiment sur que ça ne va pas fonctionner !

Merci de m'aider à faire marcher cette fonction ++

4 réponses

Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
2
int max_hauteur(pnoeud arbre)
{
if(arbre==NULL)
return 0;
return max(max_hauteur(arbre->fg),max_hauteur(arbre->fd))+1;
}

A m a u r y
Messages postés
14
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
30 octobre 2006

En effet, cette fonction ne semble pas très au point! Il serait surtout utile de préciser comment sont construites les classes (ou structures) pnoeud et arbre. Lorsque la f° hauteur se rappelle elle-même, tu lui passes un pnoeud qui est membre d'un arbre par l'intermédiaire d'un pointeur d'arbre (arbre->fg) : pourquoi?

Remarque : sauf erreur de ma part, -> est n'est pas un opérateur du c mais du cpp

sten
ka
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
-> est l'adresseur de champ d'un pointeur de structure en C comme en C++.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
4
Date d'inscription
vendredi 24 mars 2006
Statut
Membre
Dernière intervention
8 avril 2006

Merci beaucoup Amaury, ta fonction répond tout à fait à mes
attentes et en plus on ne peut pas faire plus simple ! J'ai honte
d'avoir fait des erreurs, peut être que ça changera avec le temps.



Par ailleurs, je voulais savoir si vous saviez la façon de procéder
pour incrémenter de 1 le nb de cases d'un tableau (initialement int
tab[0]) ? Je crois qu'il faut utiliser les fonctions realloc ou calloc
mais je ne sais pas m'en servir !

En fait, j'ai besoin de savoir ça pour faire une fonction qui parcours
un arbre de huffman. Je parcours cet arbre de la racine au feuille. Je
vais de droite à gauche, lorsque je vais à droite, je mets un 1, et
quand je vais à gauche je mets un 0. Ainsi, quand j'arrive à une
feuille, qui correspond à un caractère, je mets dans un tableau, le
nouveau code de ce caractère.

Merci de vos lumières !



@bientot !