#include<stdio.h>
#include<stdlib.h>
typedef struct treeNode *ptr;
typedef treeNode tree;
typedef struct stackNode *ptrStack;
typedef ptrStack stack;
struct treeNode
{
char element;
ptr left;
ptr right;
};
struct stackNode
{
tree element;
ptrStack next;
};
tree polishToTree(char exp[])
{
int i=0;
stack s=creatStack();
while(exp[i]!='\0')
{
if(exp[i]!='+'&&exp[i]!='-'&&exp[i]!='*'&&exp[i]!='/')
{
tree tmpTree=creatTree();
tmpTree->element=exp[i];
tmpTree->left=tmpTree->right=NULL;
push(tmpTree,s);
}
else
{
tree tmpTree=creatTree();
tmpTree->element=exp[i];
tmpTree->right=top(s);
pop(s);
tmpTree->left=top(s);
pop(s);
push(tmpTree,s);
}
i++;
}
tree result=top(s)->element;
pop(s);
return result;
}