思路:
先序输入,建立二叉树,中序输出表达式。
建立二叉树的完整过程(加上#是为了方便理解全过程,实际生成的二叉树不含#):
AC代码:
#include <iostream>
using namespace std;
typedef struct bitnode
{
char data;
struct bitnode *lchild,*rchild;
}*bitree;
//创建树,先序
bitree creat_tree(bitree T)
{
char c;
c = getchar();
if(c=='#')
return NULL;
else
{
T = new struct bitnode;
T->data = c;
T->lchild = NULL;
T->rchild = NULL;
T->lchild = creat_tree(T->lchild);
T->rchild = creat_tree(T->rchild);
return T;
}
}
//中序输出
void mid_print(bitree T)
{
if(T)
{
mid_print(T->lchild);
cout<<T->data;
mid_print(T->rchild);
}
}
int main()
{
bitree T;
T = creat_tree(T);
mid_print(T);
return 0;
}