Description
编写程序,输出以二叉树表示的算术表达式,若该表达式中含有括号,则在输出时应添上。
Input
按先序输入一行字符,其中#表示取消建立子树结点,即所有叶子结点均为#。
Output
输出该二叉树所表示的算术表达式(若表达式中含有括号,则在输出时应添上)
Sample Input *+a(###b#)##c##
Sample Output (a+b)*c
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
typedef struct node
{
char data;
struct node*lchild;
struct node*rchild;
}BiTNode,*BiTree;
void creat(BiTree*root)
{
char ch;
ch=getchar();
if(ch=='#')
{
*root=NULL;
}
else{
*root=(BiTree)malloc(sizeof(BiTNode));
(*root)->data=ch;
creat(&((*root)->lchild));
creat(&((*root)->rchild));
}
}
void print(BiTree p)
{
if(p != NULL)
{
print(p->lchild); //遍历左子树
printf("%c",p->data);//输出该结点
print(p->rchild); //遍历右子树
}
}
int main()
{
BiTree root;
creat(&root);
print(root);
return 0;
}