#include <stdio.h>
#define MAX_TREE_HEIGHT 10
#define TREE_BUFSIZE (1<<MAX_TREE_HEIGHT)
int main()
{
char str[] = "(12 + 3) * ( 3 * (4 + 5 ))";
char n[TREE_BUFSIZE]={0};
char *p;
int w=1, i;
for(p=str; *p; ++p)
switch(*p) {
case ' ': continue;
case '(': w = w*2 + 1; break;
case ')': w = (w-1)/2; break;
case '+':
case '*':
case '-':
case '/': n[w++/2]=*p; break;
default: n[w]=n[w]*10+(*p-'0'); break;
}
char ans[15] = { '*', '+', '*', 12, 3, 3, '+', 0, 0, 0, 0, 0, 0, 4, 5 };
int correct = 1; for(i=0;i<15;i++) if (ans[i]!=n[i]) { correct=0; break; }
printf("%s\n", correct ? "Correct." : "Wrong.");
}