C++ parcours iteratif arbres binaires
supermagic
-
Zorro -
Zorro -
C++ parcours arbres binaires
Voila g fais les aprcours recursifs il me reste les parcours iteraifs
j'arrive pas à realiser avec les piles et les boucles tantque !
Si possible prennez ce code executable et ajoutez une procedure de parcour iteratif (prefixe ou infixe ou postefixe. ?????????????????????????????
#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");
}
Voila g fais les aprcours recursifs il me reste les parcours iteraifs
j'arrive pas à realiser avec les piles et les boucles tantque !
Si possible prennez ce code executable et ajoutez une procedure de parcour iteratif (prefixe ou infixe ou postefixe. ?????????????????????????????
#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");
}
A voir également:
- C++ parcours iteratif arbres binaires
- Mes parcours google - Guide
- Codes binaires - Guide
- Parcours du titanic - Guide
- Parcours michelin - Télécharger - Transports & Cartes
- Animation parcours 3d gratuit - Télécharger - Transports & Cartes