jbitsch68
Messages postés3Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention 9 mai 2010
-
9 janv. 2010 à 11:59
jbitsch68
Messages postés3Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention 9 mai 2010
-
9 janv. 2010 à 16:47
bonjour,
j'essaye de créer un arbre binaire.
voici le code :
--- les classes noeud et arbrebinaire
#include
class Noeud;
class ArbreBinaire
{
public :
void affiche () const ;
void afficheRacine() const;
ArbreBinaire(int i);
ArbreBinaire();
private :
Noeud * racine ;
};
class Noeud{
friend class ArbreBinaire;
public :
private :
int info ;
ArbreBinaire fg, fd ;
Noeud(int i);
};
---l'implémentation
#include "ArbreBinaire.h"
void ArbreBinaire::affiche () const
{
if (racine != 0 )
{ std::cout<<racine->info << " ";
racine->fg.affiche();
racine->fd.affiche();
}
}
void ArbreBinaire::afficheRacine()const
{
std::cout<<racine->info<<" est la racine de l'arbre"<<std::endl;
}
ArbreBinaire::ArbreBinaire():racine(0){}
ArbreBinaire::ArbreBinaire(int i):racine(new Noeud(i)){}
Noeud::Noeud(int i ):info(i),fg(),fd(){}
--- et le main
#include
#include "ArbreBinaire.h"
using namespace std ;
int main ()
{
ArbreBinaire * arbre = new ArbreBinaire(5);
arbre->afficheRacine();
system("pause");
}
Le code devrai afficher 5 mais ne fait rien, je vois absolument pas pourquoi.
Evite aussi l'utilisation de la commande "system".
ArbreBinaire * arbre = new ArbreBinaire(5);
Non seulement tu ne fais pas de delete après, mais en plus on pourrait tout à fait écrire:
#include
int main ()
{
ArbreBinaire arbre(5);
arbre.afficheRacine();
return 0;
}
Le friend est à utiliser avec parcimonie. Ici, il ne sert pas à grand chose. Dans ta classe Racine, tu as ArbreBinaire fg, fd. Ils devraient être des pointeurs.
#include
#include "ArbreBinaire.h"
int main ()
{
ArbreBinaire arbre(5);
arbre.afficheRacine();
return 0;
}
A mon sens, on peut se passer de la classe Noeud, tous faire dans la classe ArbreBinaire, et si tu veux masquer certaines opérations, créer un proxy dessus.
jbitsch68
Messages postés3Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention 9 mai 2010 9 janv. 2010 à 16:00
Oui merci pour tout ces renseignements.
C'est notre prof qui implémente les arbres de cette manière..., mais je trouve ton implémentation aussi très correcte Merci.
Pour le new c'est une habitude de java, désolé.
je viens de télécharger Codeblock et la ca marche, avec dev cpp(une version beta ) cela n'a pas fonctionné.
Est ce que vous savez si un framework existe pour l'affichage graphique des arbres binaires ? ou graph ?
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 9 janv. 2010 à 16:14
vec dev cpp(une version beta ) cela n'a pas fonctionné.
Dev-cpp n'est plus tenu à jour depuis des années :)
Est ce que vous savez si un framework existe pour l'affichage graphique des arbres binaires ? ou graph ?
Non pas vraiment. Il y a bien dotty issue de la collection d'outil graphviz, mais ça dessine un graphe en fonction d'une sortie spécifique, et je ne sais pas si c'est disponible sous Windows (Sous Linux, c'est sur).