osea me dejaron que haga una funcion no recursiva uqe cuente las hojas de un arbol,,,por loque he leido es mas facil aserlo con recursividad pero lo uqe no entiendo es como hacer una funcion no recursiva
a continuacion te mando mi codigo en ,,este codigo usa recursividad lo que quiero es hacerlo ocn una funcion no recursiva
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
struct nodo
{
int elemento;
nodo*izqda,*drcha;
};
typedef nodo Nodo;
//-----------------------------------------------------
void insertar(Nodo**raiz,int nuevoelem);
Nodo*crearnodo(int nuevoelem);
void visualizar(Nodo*r);
void contarhojas(Nodo*r);
//-----------------------------------------------------
int hojas=0;
void main()
{
int num;
Nodo*R=0;
cout<<"ingrese el numero(0->fin)";
cin>>num;
do
{
if(num)
{insertar(&R,num);
cout<<"ingrese el numero(0->fin)";
cin>>num;
}
}while(num);
cout<<"RECORRIDO EN ORDEN ES:"<<endl;
visualizar®;
cout<<"el numero de nodos hojas del arbol es"<<endl;
contarhojas®;
cout<<hojas<<endl;
getch();
}
//-------------------------------------------------
void insertar(Nodo**raiz,int nuevoelem)
{
if(!(*raiz))
*raiz=crearnodo(nuevoelem);
else
if(nuevoelem<(*raiz)->elemento)
insertar(&((*raiz)->izqda),nuevoelem);
else
insertar(&((*raiz)->drcha),nuevoelem);
}
//---------------------------------------------------
Nodo*crearnodo(int nuevoelem)
{Nodo*t;
t=(Nodo*)malloc(sizeof(nodo));
t->elemento=nuevoelem;
t->drcha=t->izqda=NULL;
return t;
}
void visualizar(Nodo*r)
{if®
{
visualizar(r->izqda);
cout<<r->elemento<<endl;
//visualizar(r->izqda);
visualizar(r->drcha);
}
}
void contarhojas(Nodo*r)
{if®
{
if((r->drcha==NULL)&&(r->izqda==NULL))
hojas=hojas+1;
contarhojas(r->izqda);
contarhojas(r->drcha);
}
}
te agradeceria mucho si me ayudaras ,,es un ejercicio uqe me dejaron en la universidad pero estoy investigando y he visto que se pueden usar arrays ,,pero es un poco confusoo.......
por favoe ayudame si ,gracias