#include #include #include #include #include #define MAX 100 typedef struct TNode *Tptr; typedef struct TNode { char data; Tptr leftchild; Tptr rightchild; }TNode; ///* //Create nodes in the tree Tptr createNode(char val) { Tptr temp =(Tptr)malloc(sizeof(TNode)); temp->data = val; temp->leftchild = temp->rightchild = NULL; return temp; } //*/ Tptr stack[MAX]; int top=-1; int i; //check if stack is empty bool isEmpty() { return top==-1; } //check if stack is full bool isFull() { return top==MAX -1; } //push element onto stack void Push(Tptr e) { if(isFull()) { return; } stack[++top]=e; } //pop element from stack Tptr Pop() { Tptr popped=createNode('\0'); if(isEmpty()) { free(popped); } else { popped=stack[top--]; } return popped; } //check if character is operator bool isOperator(char ch) { bool ret=false; if(ch=='*' || ch=='/' || ch=='+' || ch=='-' || ch=='^' ) { ret = true; } return ret; } Tptr createExpression(char* postfix) { int i; int plen =strlen(postfix); char cc; for(i=0;irightchild = Pop(); node->leftchild = Pop(); Push(node); } } return stack[top]; } void inOrderTraversal(Tptr root) { if (root != NULL) { inOrderTraversal(root->leftchild); printf("%c ", root->data); inOrderTraversal(root->rightchild); } } int main() { char postfix[] = "ab*cd/-"; Tptr expressionTree = createExpression(postfix); if (expressionTree != NULL) { printf("In-Order Traversal of the Expression Tree: "); inOrderTraversal(expressionTree); printf("\n"); } return 0; }