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

lordvan 4 Messages postés vendredi 24 mars 2006Date d'inscription 8 avril 2006 Dernière intervention - 6 avril 2006 à 21:53 - Dernière réponse : lordvan 4 Messages postés vendredi 24 mars 2006Date d'inscription 8 avril 2006 Dernière intervention
- 7 avril 2006 à 14:00
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 ++
Afficher la suite 

4 réponses

Répondre au sujet
Pamaury 341 Messages postés jeudi 3 avril 2003Date d'inscription 17 juin 2008 Dernière intervention - 6 avril 2006 à 22:34
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Pamaury
cs_stenka 14 Messages postés lundi 13 février 2006Date d'inscription 30 octobre 2006 Dernière intervention - 6 avril 2006 à 22:35
0
Utile
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
Commenter la réponse de cs_stenka
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 6 avril 2006 à 23:25
0
Utile
-> est l'adresseur de champ d'un pointeur de structure en C comme en C++.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Commenter la réponse de BruNews
lordvan 4 Messages postés vendredi 24 mars 2006Date d'inscription 8 avril 2006 Dernière intervention - 7 avril 2006 à 14:00
0
Utile
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 !
Commenter la réponse de lordvan

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.