暨南大学本科实验报告专用纸
课程名称数据结构实验成绩评定
实验项目名称习题6.51 指导教师孙世良
实验项目编号实验7 实验项目类型实验地点实验楼三楼机房学生姓名林炜哲学号2013053005
学院电气信息学院系专业软件工程
实验时间年月日午~月日午温度℃湿度(一)实验目的
熟悉和理解二叉树的结构特性;
熟悉二叉树的各种存储结构的特点及适用范围;
掌握遍历二叉树的各种操作及其实现方式。
(二)实验内容和要求
编写一个算法,输出以二叉树表示的算术表达式,若该表达式中含有括号,则应该在输出时添上。
(三)主要仪器设备
实验环境:Microsoft Visual Studio 2012
(四)源程序
#include<stdio.h>
#include<stdlib.h>
typedef struct bitnode{
char data;
struct bitnode *lchild,*rchild;
}bitnode,*bitree;
void create(bitree &T){
char t;
t=getchar();
if(t==' ')
T=NULL;
else{
if( !( T=(bitnode*)malloc(sizeof(bitnode)) ) ) exit(0);
T->data=t;
create(T->lchild);
create(T->rchild);
}
}
void middle_order(bitree &Node){
if(Node != NULL){
if((Node->data=='*'||Node->data=='/')&&(Node->lchild->data=='+'|| Node->lchild->data=='-')) printf("( ");
middle_order(Node->lchild);
if((Node->data=='*'||Node->data=='/')&&(Node->lchild->data=='+'|| Node->lchild->data=='-')) printf(") ");
printf("%c ", Node->data);
if((Node->data=='*'||Node->data=='/')&&(Node->rchild->data=='+'|| Node->rchild->data=='-')) printf("( ");
middle_order(Node->rchild);
if((Node->data=='*'||Node->data=='/')&&(Node->rchild->data=='+'|| Node->rchild->data=='-')) printf(") ");
}
}
int main()
{
bitree y;
printf("以先序遍历的方式输入二叉树:");
create(y);
printf("输出表达式:");
middle_order(y);
return 0;
}
(五)数据调试
(六)实验结果分析与总结
以先序遍历的方式输入二叉树:-+a *b -c d /e f ,
由此得到表达式:a+b*(c-d)-e/f
验证可得表达式正确。
程序正常运行。
总结:
了解了二叉树的存储结构以及遍历二叉树的操作。