Arbre binaire de recherche(langage C)
Fermé
matafix
Messages postés
45
Date d'inscription
samedi 1 décembre 2007
Statut
Membre
Dernière intervention
23 janvier 2009
-
24 avril 2008 à 00:34
manel zairi - 29 juin 2011 à 01:26
manel zairi - 29 juin 2011 à 01:26
A voir également:
- Arbre binaire de recherche(langage C)
- Langage binaire - Guide
- Langage ascii - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche adresse - Guide
- Recherche musique - Guide
3 réponses
execute ça en c++
#include<iostream.h>
struct noeud {
int info;
noeud *fg;
noeud *fd;
};
const int max=30;
noeud *t[max];
void prefixe_rec(noeud *arbre){
noeud *nd;
nd=arbre;
if(nd!=NULL){
cout<<nd->info<<" ";
prefixe_rec(nd->fg);
prefixe_rec(nd->fd);}
}
void infixe_rec(noeud *arbre){
noeud *nd;
nd=arbre;
if(nd!=NULL){
infixe_rec(nd->fg);
cout<<nd->info<<" ";
infixe_rec(nd->fd);}
}
void suffixe_rec(noeud *arbre){
noeud *nd;
nd=arbre;
if(nd!=NULL){
suffixe_rec(nd->fg);
suffixe_rec(nd->fd);
cout<<nd->info<<" ";}
}
struct pile {
noeud *sommet;
pile *suivant;
};
pile *creer_pile(pile *p){
p=NULL;}
bool pile_vide(pile *p){
return (p==NULL);}
void empiler(noeud *nd,pile *p){
pile *q;
q=new(pile);
q->suivant=p;
q->sommet=nd;
p=q;}
noeud *depiler(pile *p){
pile *q;
if (!pile_vide(p)){
return p->sommet;
q=p;
p=p->suivant;
delete(q);}
else cout<<"pile vide";
}
int main(){
noeud *nd,*racine;
int n,info;
cout<<"Arbre representate par tableau"<<endl<<endl;
cout<<"Si un neoud a un seul fis l'autre est represente par -1"<<endl<<endl;
cout<<"Donnez le nombre de noeud (elements du tableau) "<<endl;
cin>>n;
for (int i=1;i<=n;i++){
cout<<"donnez la val du noeud "<<i<<" ";
cin>>info;
if (info==-1) t[i]=NULL;
else {
t[i]=new(noeud);
t[i]->info=info;
t[i]->fg=NULL;
t[i]->fd=NULL;}
}
for (int i=1;i<=n/2;i++){
if (t[2*i]==NULL) t[i]->fg=NULL; else t[i]->fg=t[2*i];
if (t[2*i+1]==NULL)t[i]->fd=NULL;else t[i]->fd=t[2*i+1];
}
racine=t[1];
prefixe_rec(racine);cout<<endl;
infixe_rec(racine);cout<<endl;
suffixe_rec(racine);cout<<endl;
system("pause");
}
#include<iostream.h>
struct noeud {
int info;
noeud *fg;
noeud *fd;
};
const int max=30;
noeud *t[max];
void prefixe_rec(noeud *arbre){
noeud *nd;
nd=arbre;
if(nd!=NULL){
cout<<nd->info<<" ";
prefixe_rec(nd->fg);
prefixe_rec(nd->fd);}
}
void infixe_rec(noeud *arbre){
noeud *nd;
nd=arbre;
if(nd!=NULL){
infixe_rec(nd->fg);
cout<<nd->info<<" ";
infixe_rec(nd->fd);}
}
void suffixe_rec(noeud *arbre){
noeud *nd;
nd=arbre;
if(nd!=NULL){
suffixe_rec(nd->fg);
suffixe_rec(nd->fd);
cout<<nd->info<<" ";}
}
struct pile {
noeud *sommet;
pile *suivant;
};
pile *creer_pile(pile *p){
p=NULL;}
bool pile_vide(pile *p){
return (p==NULL);}
void empiler(noeud *nd,pile *p){
pile *q;
q=new(pile);
q->suivant=p;
q->sommet=nd;
p=q;}
noeud *depiler(pile *p){
pile *q;
if (!pile_vide(p)){
return p->sommet;
q=p;
p=p->suivant;
delete(q);}
else cout<<"pile vide";
}
int main(){
noeud *nd,*racine;
int n,info;
cout<<"Arbre representate par tableau"<<endl<<endl;
cout<<"Si un neoud a un seul fis l'autre est represente par -1"<<endl<<endl;
cout<<"Donnez le nombre de noeud (elements du tableau) "<<endl;
cin>>n;
for (int i=1;i<=n;i++){
cout<<"donnez la val du noeud "<<i<<" ";
cin>>info;
if (info==-1) t[i]=NULL;
else {
t[i]=new(noeud);
t[i]->info=info;
t[i]->fg=NULL;
t[i]->fd=NULL;}
}
for (int i=1;i<=n/2;i++){
if (t[2*i]==NULL) t[i]->fg=NULL; else t[i]->fg=t[2*i];
if (t[2*i+1]==NULL)t[i]->fd=NULL;else t[i]->fd=t[2*i+1];
}
racine=t[1];
prefixe_rec(racine);cout<<endl;
infixe_rec(racine);cout<<endl;
suffixe_rec(racine);cout<<endl;
system("pause");
}
Emeric84
Messages postés
30
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
24 avril 2008
8
24 avril 2008 à 20:45
24 avril 2008 à 20:45
Qu'est-ce que vous appelez implémenter un ABR par tableau ?
La solution généralement employée est de partir de la racine en premier élément du tableau, et de ranger chaque fils plus loin, à savoir pour une racine i donnée, son fils gauche et droit seront respectivement à l'indice 2i et 2i+1...
Par exemple :
Donne :
4 2 7 1 3 6 9
La solution généralement employée est de partir de la racine en premier élément du tableau, et de ranger chaque fils plus loin, à savoir pour une racine i donnée, son fils gauche et droit seront respectivement à l'indice 2i et 2i+1...
Par exemple :
4 / \ 2 7 / \ / \ 1 3 6 9
Donne :
4 2 7 1 3 6 9
voila l'implementation en C !
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//déclaration du noeud!
struct Noeud
{
char d; //la tu met le type que tu veux !!
struct Noeud* succ_gauche;
struct Noeud* succ_droit;
};
typedef struct Noeud* TArbre;
int main()
{
TArbre arbre=NULL;
system("PAUSE");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//déclaration du noeud!
struct Noeud
{
char d; //la tu met le type que tu veux !!
struct Noeud* succ_gauche;
struct Noeud* succ_droit;
};
typedef struct Noeud* TArbre;
int main()
{
TArbre arbre=NULL;
system("PAUSE");
return 0;
}
26 mars 2011 à 20:35
29 juin 2011 à 01:26