Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/12/2015, 16:09
pyromiyuve
 
Fecha de Ingreso: diciembre-2011
Mensajes: 21
Antigüedad: 12 años, 4 meses
Puntos: 0
Consulta sobre Arboles

Hola a todos!

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
  1. int Altura(Nodo *t)
  2.     {
  3.     int a,b;
  4.     if (t->hijo_izq == NULL && t->hijo_der == NULL)
  5.          return 1;
  6.     else
  7.     {
  8.         a=Altura(t->hijo_izq);
  9.         b= Altura(t->hijo_der);
  10.         if (a<b) return b+1;
  11.         else return a+1;
  12.      
  13.     }
  14.      
  15.     };

y para el llamado desde el main:

(parte del codigo post)

Código C++:
Ver original
  1. Nodo *a=post.obtener_raiz(), *auxiliar = post.obtener_raiz();
  2.             post.evaluar_res(a); a = post.obtener_raiz();
  3.             cout<<"Evaluacion: "<<*(a->res)<<endl;
  4.             cout<<"Notacion prefija: ";
  5.             post.preOrden(auxiliar);
  6.             cout<<"Altura: " ;
  7.                         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!