多项式表达式的转换----二叉树实现
例:
输入
12+345+**
输出
前序遍历:
* + 1 2 * 3 + 4 5
中序遍历:
1 + 2 * 3 * 4 + 5
后序遍历:
1 2 + 3 4 5 + * *
层次遍历:
* + * 1 2 3 + 4 5
代码实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int m = 0; ///----------用于存放字符串的长度(层次遍历会用到)
typedef struct TreeNode{ ///----------建立树
char ch;
struct TreeNode * LChild , * RChild;
}TreeNode;
typedef struct Node{///-------建立链表
TreeNode * t; //---指向树的指针
struct Node * next;
}Node;
typedef struct Stack{///-----建立栈
Node * top; //-----栈顶
Node * bottom;//---栈底
}Stack;
int Init( Stack * s )///----初始化栈
{
Node * pnew = (Node *)malloc(sizeof(Node));
s->bottom = s->top = pnew;
pnew->next = NULL;
}
int IsEmpty( Stack * s )///----栈空
{
return s->top == s->bottom;
}
void Push( Stack * s , TreeNode * tree )///-----压栈-------(注意:这里每次压入栈的是一棵树)
{
Node * pnew =