C++ parcours iteratif arbres binaires

Fermé
supermagic - 4 mai 2008 à 17:12
 Zorro - 23 mai 2008 à 16:38
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");
}
A voir également:

1 réponse

Esque c juste ?
0