输出以二叉树表示的算术表达式
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node
{
char Data;
struct Node* LChild;
struct Node* RChild; //先序遍历创建
}BiTNode,*PBiTNode;
void CreateBiTree(PBiTNode *bt) //这个直接递归就好了,不用循环
{
char ch;
ch=getchar();
if(ch=='\n') //到换行的话应该是已经到根节点了
{
return;
}
else if(ch=='#') //一个左括号就新创建一个左子树。
{
(*bt)=NULL;//这个bt是新的子树的结点啊,为空是自然的
}
else
{
(*bt)=(PBiTNode)malloc(sizeof(BiTNode));
(*bt)->Data=ch;
CreateBiTree(&((*bt)->LChild));
CreateBiTree(&((*bt)->RChild)); //(*bt)一定要打括号
}
return;
}
void PostOrder(PBiTNode bt) //中序遍历输出
{
if(bt!=NULL)
{
PostOrder(bt->LChild);
printf("%c",bt->Data);
PostOrder(bt->RChild);
}
}
int main()
{
PBiTNode bt;
CreateBiTree(&bt); //创建是要写取地址符的。
PostOrder(bt);
printf("\n");
return 0;
}