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

Messages postés
4
Date d'inscription
vendredi 24 mars 2006
Dernière intervention
8 avril 2006
- - Dernière réponse : lordvan
Messages postés
4
Date d'inscription
vendredi 24 mars 2006
Dernière intervention
8 avril 2006
- 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 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Dernière intervention
17 juin 2008
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Pamaury
Messages postés
14
Date d'inscription
lundi 13 février 2006
Dernière intervention
30 octobre 2006
0
Merci
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
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
0
Merci
-> 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
Messages postés
4
Date d'inscription
vendredi 24 mars 2006
Dernière intervention
8 avril 2006
0
Merci
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.