本题要求实现一个函数,输出二叉树表示的表达式的后缀式。输入一个表达式的前缀形式(该表达式二叉树的扩展的先序序列),构造该二叉树,并输出其后序序列即为该表达式的后缀形式。
函数接口定义:
void creat(BiTree &Tree)//构建二叉树
void PostOrder(BiTree Tree)//输出后缀表达式
其中 Tree
为用户传入的参数,指向根节点的指针。
裁判测试程序样例:
#include<stdio.h>
#include<malloc.h>
#define len sizeof(struct BiTNode )
typedef struct BiTNode
{
char data;
struct BiTNode *lchild;
struct BiTNode *rchild;
}BiTNode,*BiTree;
void creat(BiTree &Tree);//构建二叉树
void PostOrder(BiTree Tree);//后序输出二叉树
int main()
{
BiTree Tree;
creat(Tree);//创建二叉树
printf("后缀表达式为:");
PostOrder(Tree);//后序变量
return 0;
}
/* 请在这里填写答案 */
输入样例:
对于图中给出的二叉树,输入数据为扩展的先序序列:
+-A##*F##G##C##
输出样例:
在这里给出相应的输出。例如:
后缀表达式为:AFG*-C+
代码:
void creat(BiTree &Tree){
char c;
scanf("%c",&c);
if(c=='#'){
Tree=NULL;
}else{
Tree=(BiTree)malloc(len);
Tree->data=c;
creat(Tree->lchild);
creat(Tree->rchild);
}
}
void PostOrder(BiTree Tree){
if(Tree==NULL){
return;
}
PostOrder(Tree->lchild);
PostOrder(Tree->rchild);
printf("%c",Tree->data);
}