#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.");
}

