二叉树的建立与遍历(实验报告).docVIP

  • 37
  • 0
  • 约5.23千字
  • 约 13页
  • 2019-04-17 发布于江西
  • 举报
PAGE 本科学生综合性实验报告 学 院: 软件与通信工程学院 课程名称: 数据结构与算法 专业班级: 09通信工程1班 姓 名: 王燕 学 号: 0093731 学生实验报告(2) 学生姓名 王燕 学号 0093731 同组人 实验项目 二叉树的建立和遍历 □必修 □选修 □演示性实验 □验证性实验 □操作性实验 □综合性实验 实验地点 H113 实验仪器台号 指导教师 蒋娜 实验日期及节次 周五8、9、A节 一、实验目的 1.进一步掌握树的结构及非线性特点,递归特点。 2.进一步巩固对指针的使用,编写二叉树的创建和遍历基本操作的实现程序。 二、实验内容 建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。 [实验说明]   从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(先序、中序、后序),将遍历结果打印输出。 [测试数据]   ABC**DE*G**F***(其中*表示空格字符)   则输出结果为 先序:ABCDEGF   中序:CBEGDFA   后序:CGBFDBA [拓展要求]   采用非递归算法实现二叉树遍历。 三、实验要求 1.用C++/C完成算法设计和程序设计并上机调试通过。 2. 实验过程中学生调试完成,需向教师演示实验过程和结果。 3.撰写实验报告,提供实验结果和数据。 4.分析算法,要求给出具体的算法分析结果,包括时间复杂度和空间复杂度,并简要给出算法设计小结和心得。 5. 采用上机情况、程序质量、实习报告相结合的形式,满分为100分。 四、实验仪器 WindowsXP以上操作系统; Visual C++6.0语言环境; 每人一台PC机。 五、实验内容和步骤 1.启动Windows XP操作系统 打开计算机,启动Windows XP操作系统。 2.创建工作文件夹 创建Visual C++ 6.0的工作文件夹。 3.启动Visual C++ 6.0 建立一个空工程BiTree,在建立一个源文件bitree 4.编写代码如下: #includestdio.h #includemalloc.h #includestdlib.h #define MAX 50 typedef struct Node { char data; struct Node * LChild; struct Node * RChild; }BiTNode, * BiTree; //建立二叉链表 BiTNode *BiT_Create(char s[ ],int *pi) { BiTNode *root; char ch; ch=s[*pi]; (*pi)++; if(ch==*) return NULL; root=(BiTNode*)malloc(sizeof(BiTNode)); root-data=ch; root-LChild=BiT_Create(s,pi); root-RChild=BiT_Create(s,pi); return(root); } //前序递归遍历 void PreOrder(BiTree root) { if(root!=NULL) { printf(%c,root-data); PreOrder(root-LChild); PreOrder(root-RChild); } } //中序递归遍历 void InOrder(BiTree root) { if(root!=NULL) { InOrder(root-LChild); printf(%c,root-data); InOrder(root-RChild); } } //后序递归遍历 void PostOrder(BiTree root) { if(root!=NULL) { PostOrder(root-LChild); PostOrder(root-RChild); printf(%c,root-data); } } //前序非递归遍历二叉树 void BiT_PreOrder(BiTNode *root) { BiTNode *p,*node[MAX]; int top=0; p=root; do{ while(p!=NULL) { if(p-data!=*) printf(%c,p-data); node[top]=p; top++; p=p-LChild; } if(top0) { top--; p=nod

文档评论(0)

1亿VIP精品文档

相关文档