Précédent   Forum du club des développeurs et IT Pro > C et C++ > C++ > Débuter
Débuter Forum d'entraide pour débuter en langage de programmation C++. Avant de poster : cours d'initiation au C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/02/2013, 12h57   #1
nejibos
Invité de passage
 
Homme
Développeur informatique
Inscription : février 2013
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : Développeur informatique
Secteur : Enseignement

Informations forums :
Inscription : février 2013
Messages : 31
Points : 4
Points : 4
Par défaut Taille D'un arbre AVL

je suis entrain de travaillé sur un petit projet en utilisant les arbres AVL
SVP quelqu’un peux m'aider pour implémenter le fonction Taille sachant qu'il une autre fonction max que normalement sera utile
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
///private:
    class Noeud{
      public:
        Noeud(const T&);
        Noeud *gauche;
        Noeud *droite;
        int equilibre;
        T element;
    };
/********************/
 
 
Template <class T>
int  ArbreAVL<T>::hauteur() const{
    Noeud* n=racine;
   assert(n!=NULL)
 
    if(n->gauche!=NULL)
 
	 if(n->equilibre > 0)
           n = n->gauche;
    if(n->droite!=NULL)
 
 
 
    hauteur(n->contenu);
   }
    return 0;
}
/***********************/
template <class T>
const T& ArbreAVL<T>::max(Noeud* n) const
{
         assert(n!=NULL)
 
	while (n->droite != NULL)
		n = n->droite;
	return  n->element;;
}
nejibos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2013, 16h23   #2
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 380
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 22 380
Points : 32 015
Points : 32 015
Envoyer un message via MSN à Médinoc
Commence par définir ce que tu appelles la taille. Est-ce le nombre total d'éléments? Si oui, c'est assez facile:
Code C++ :
1
2
3
4
5
6
7
8
9
10
static int STaille(const Noeud *pNoeud)
{
	int taille = 0;
	if(pNoeud==NULL)
		return taille;
	taille += STaille(pNoeud->gauche);
	taille += 1;
	taille += STaille(pNoeud->droite);
	return taille;
}
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone.
-- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2013, 18h53   #3
nejibos
Invité de passage
 
Homme
Développeur informatique
Inscription : février 2013
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : Développeur informatique
Secteur : Enseignement

Informations forums :
Inscription : février 2013
Messages : 31
Points : 4
Points : 4
Citation:
Envoyé par Médinoc Voir le message
Commence par définir ce que tu appelles la taille. Est-ce le nombre total d'éléments? Si oui, c'est assez facile:
Code C++ :
1
2
3
4
5
6
7
8
9
10
static int STaille(const Noeud *pNoeud)
{
	int taille = 0;
	if(pNoeud==NULL)
		return taille;
	taille += STaille(pNoeud->gauche);
	taille += 1;
	taille += STaille(pNoeud->droite);
	return taille;
}
merci
deja j'ai l'impelemnter comme ca avant de voir votre reponse
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
template <class T>
int  ArbreAVL<T>::hauteur() const{
    hauteur(racine);
 
}
template <class T>
int  ArbreAVL<T>::hauteur(Noeud*& noeud) const
 
    if (noeud == NULL) return 0;
 
    int hauteur_gauche = hauteur(noeud->gauche);
    int hauteur_droit = hauteur(noeud->droite);
  return 1 + ((hauteur_gauche > hauteur_droit) ? hauteur_gauche : hauteur_droit);
nejibos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2013, 22h53   #4
Médinoc
Expert Confirmé Sénior
 
Avatar de Médinoc
 
Homme
Développeur informatique
Inscription : septembre 2005
Messages : 22 380
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2005
Messages : 22 380
Points : 32 015
Points : 32 015
Envoyer un message via MSN à Médinoc
Attention, je considère la hauteur différente du nombre total d'éléments. Je t'avais bien dit que le mot "taille" était ambigu.
Ta fonction calcule la hauteur, la mienne le nombre total d'élements.

Ensuite:
  • Pourquoi prendre le pointeur par référence? On ne le modifie pas...
  • Pourquoi le pointeur n'est-il pas const? On ne modifie pas le noeud pointé...
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone.
-- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Médinoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h21.


 
 
 
 
Partenaires

Hébergement Web