Les Allergies
Alimentaires
Posez votre question Signaler

[C++] implémention d'un arbre binaire [Résolu]

mina15 8Messages postés 5 octobre 2005Date d'inscription - Dernière réponse le 4 mai 2009 à 19:07
Bonjour tout le monde
Pourriez vous m'aidez à implémenter un arbre binaire en C++ svp.
Merci d'avance.
A bientot.
Lire la suite 

[C++] implémention d'un arbre binaire »

6 réponses
Réponse
+11
moins plus
#include<stdio.h>
#include<stdlib.h>
typedef struct noeud * tree;
struct noeud
{int val;
tree fg,fd;
};
tree cree_noeud(int val)
{
tree a;
a=(tree)malloc(sizeof(noeud));
if(!a)
{printf("pas d espace");
return(NULL);
}
if(a)
{
a->fd=NULL;
a->fg=NULL;
a->val=val;
printf("%d",a->val);
return(a);
}
}
tree ajout(tree b,tree a,tree r)
{a=r;
if(a==NULL)
{
return b;
}
else
{
if(b->val<a->val)
{
if(a->fd==NULL)
{
a->fd=b;
printf("%d",a->val);
return(r);
}
else
{
r=ajout(b,a->fd,r);
return(r);
}
}
else
{
if(a->fg==NULL)
{
a->fg=b;
printf("%d",a->val);
return r;
}
else
{
r=ajout(b,a->fg,r);
return(r);
}
}
}
}
void prefixe(tree a)
{
if(a!=NULL)
{
printf("%d ",a->val);
prefixe(a->fg);
prefixe(a->fd);
}
}

void main()
{int x,l,h;
tree r=NULL,b=NULL,k=NULL,a=NULL;free(r);
printf("donner un entier : \n" );
scanf("%d",&x);
b=cree_noeud(x);
r=ajout( b,a, r);
printf("%d",r->val);
flushall();
printf("donner un entier : \n");
scanf("%d",&x);
b=cree_noeud(x);
r=ajout( b,a, r);

prefixe(r);
}
rom1504 - 30 nov. 2008 à 23:17
C'est du C
Ajouter un commentaire
Réponse
+0
moins plus
Je signale juste que du C++ c'est jamais que du C enrichi. Alors effectivement tu peux faire des classes, des héritages, des templates (ou encore mieux, du boost) si ça t'amuse, mais en soit ça ne change pas grand chose.
rom1504 - 1 déc. 2008 à 17:34
Non le c++ et le c sont deux langages bien différents maintenant et ici c'est bien du C vu l'utilisation de malloc, pas d'utilisation des classes alors que ça serait plus adapté en c++, utilisation de printf ( au lieu de cout en c++ ) et inclusion de stdio.h et stdlib.h.
On peut bien compiler du c facilement avec un compilateur fait pour le c++ mais ça ne deviens pas pour autant du c++...
ccc - 4 mai 2009 à 19:07
au contraire ça change tous
Ajouter un commentaire
Réponse
+0
moins plus
Sans vouloir te faire de peine toutes les fonctions "C" sont accessibles via des headers genre <cstdio>, <cassert>, etc... Du coup est ce que le code n'en devient plus du C ou pas moins du C++ :p

En soi, ça n'apporte rien de vouloir coder "C++" like si tu peux le faire aussi facilement en C. Ici le seul intérêt du C++ pourrait être l'utilisation de template pour faire un arbre générique mais c'est à peu près tout ce qui est à gagner. En particulier certaines fonctions genre fscanf (pour parser un fichier) sont plus pratique qu'un std::ifstream et >>. Soit tu utilises de la lib pcre, soit au final tu utilises <cstdio> et fscanf. Toute cette dissertation pour dire qu'à mon avis dans ce cas précis ça n'a pas des masses d'importance.

Ceci dit, si tu es chaud pour faire une solution C++ n'hésite pas ;-)

Bonne chance
Ajouter un commentaire
Ce document intitulé « [C++] implémention d'un arbre binaire » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?