Tengo que entregar una asignacion en la cual "Dado un entero N y N expresiones aritméticas expresadas en notación prefija, postfija o infija, dar el resultado de evaluar dicha expresión y encuentre la altura"
Todo me va perfecto hasta que intento encontrar la altura.
La entrada del ejemplo es:
2
*+234
((2+1)-5)+(5*3)
y la salida deberia ser
Expresión 1:
Evaluación: 20
Notación Postfija: 23+4*
Altura: 2
Yo estoy usando para calcular la altura:
Código C++:
Ver original
int Altura(Nodo *t) { int a,b; if (t->hijo_izq == NULL && t->hijo_der == NULL) return 1; else { a=Altura(t->hijo_izq); b= Altura(t->hijo_der); if (a<b) return b+1; else return a+1; } };
y para el llamado desde el main:
(parte del codigo post)
Código C++:
Ver original
Nodo *a=post.obtener_raiz(), *auxiliar = post.obtener_raiz(); post.evaluar_res(a); a = post.obtener_raiz(); cout<<"Evaluacion: "<<*(a->res)<<endl; cout<<"Notacion prefija: "; post.preOrden(auxiliar); cout<<"Altura: " ; post.Altura(auxiliar);
La salida me da:
Expresión 1:
Evaluación: 20
Notación Postfija: 23+4*
y no tengo ni idea de que pasa...Me podrian ayudar?
Gracias!