Título: mostrar un arbol binario con pilas en inorden Publicado por: Diego_Capera en 19 Noviembre 2016, 01:06 am Hola me podrían hacer el favor de explicarme como mostrar un árbol binario mediante el uso de pilas en inorden, de forma recursiva ya lo se mostrar pero mediante pilas no, gracias.
#include <iostream> using namespace std; class Arbol{ int dato; Arbol *izq; Arbol *der; public: void crearRaiz(Arbol *&,int); void insIzq(Arbol *&,int); void insDer(Arbol *&,int); void crearArbol(Arbol *&); void inordenR(Arbol *); void mostrar(Arbol *); }; void Arbol::crearRaiz(Arbol *&raiz,int d){ raiz=new Arbol; raiz->dato=d; raiz->izq=raiz->der=NULL; } void Arbol::insIzq(Arbol *&aux,int d){ Arbol *nuevo=new Arbol; nuevo->dato=d; nuevo->izq=nuevo->der=NULL; aux->izq=nuevo; } void Arbol::insDer(Arbol *&aux,int d){ Arbol *nuevo=new Arbol; nuevo->dato=d; nuevo->izq=nuevo->der=NULL; aux->der=nuevo; } void Arbol::crearArbol(Arbol *&raiz){ int d=66; Arbol *aux1,*aux2; while(d>0){ cout<<"Dato= "<<endl; cin>>d; if(d>0){ if(!raiz) crearRaiz(raiz,d); else{ aux1=aux2=raiz; while(aux2&&aux1->dato!=d){ aux1=aux2; if(d<aux1->dato) aux2=aux2->izq; else aux2=aux2->der; } if(d==aux1->dato) cout<<"Dato repetido"<<endl; else{ if(d<aux1->dato) insIzq(aux1,d); else insDer(aux1,d); } } } } } void Arbol::inordenR(Arbol *aux){ if(aux){ inordenR(aux->izq); cout<<aux->dato<<endl; inordenR(aux->der);} } int main(){ Arbol *raiz=NULL,obj1; obj1.crearArbol(raiz); obj1.inordenR(raiz); } |