淮海工学院 数据结构 第3次实验树型数据结构
![淮海工学院 数据结构 第3次实验树型数据结构_第1页](https://file5.zhuangpeitu.com/fileroot5/2022-8/2/c195d5d0-6a19-403b-9973-3085f05aacc1/c195d5d0-6a19-403b-9973-3085f05aacc11.gif)
![淮海工学院 数据结构 第3次实验树型数据结构_第2页](/images/s.gif)
![淮海工学院 数据结构 第3次实验树型数据结构_第3页](/images/s.gif)
《淮海工学院 数据结构 第3次实验树型数据结构》由会员分享,可在线阅读,更多相关《淮海工学院 数据结构 第3次实验树型数据结构(9页珍藏版)》请在装配图网上搜索。
1、淮海工学院计算机科学系实验报告书课 程名: 数据结构 题 目: 树型数据结构试验 班 级: 学 号: 姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日树结构算法实现与应用报告要求1目的与要求:1)熟练掌握二叉树的二叉链表表示及前序创建算法与实现;2)熟练掌握二叉树的前序、中序和后序递归遍历算法与实现;3)掌握中序遍历线索二叉树的基本算法与实现 4)掌握中序遍历线索化二叉树的算法与实现;5)按照实验题目要求独立完成实验内容(提交程序清单及相关实验数据与运行结果);6)认真书写实验报告,并按时提交(本次实验第9周周三以前提交,不得延误)。2 实验内容或题目 实验内容:1)按照先序序列建立
2、下图所示二叉树的二插链表树,结点元素类型取字符型,树的字符序列从键盘逐个动态输入。2)在第1)步建立好的二叉链表树上实施前序、中序和后序递归遍历,并输出相应遍历序列。3) 在第1) 步建立好的二叉链表树上实施前序遍历的叶子结点输出及其个数统计。4)在第1) 步建立好的二叉链表树上实施二叉树性质三的验证;5)在第1)步建立好的二叉链表树上实施中序非递归遍历,并输出相应遍历序列(选做)6)中序线索化第1)步所建立的二叉链表树(选做)。7)中序遍历第6)步所建立的线索二叉树,并输出遍历结果(选做)(注释:实验要求完成的任务(各个实验内容)应以菜单机制显示和运行来逐项完成,即整个实验题目写一个主程序完
3、成所有实验内容,并以菜单机制实施交互运行,而不要一个实验内容写一个主程序)ABCDEFG3 实验步骤与源程序 #include #include #include typedef struct Node char data; struct Node *LChild; struct Node *RChild; BiTNode, *BiTree;void CreateBiTree(BiTree *bt) char ch; ch = getchar(); if(ch=.) *bt=NULL; else *bt=(BiTree)malloc(sizeof(BiTNode);(*bt)-data=ch;
4、 CreateBiTree(&(*bt)-LChild); CreateBiTree(&(*bt)-RChild); void Visit(char ch)printf(%c ,ch);void PreOrder(BiTree root)if (root!=NULL)Visit(root -data); PreOrder(root -LChild); PreOrder(root -RChild);void InOrder(BiTree root) if (root!=NULL)InOrder(root -LChild);Visit(root -data);InOrder(root -RChil
5、d);void PostOrder(BiTree root)if(root!=NULL)PostOrder(root -LChild);PostOrder(root -RChild);Visit(root -data); void Pre(BiTree root)if (root!=NULL)if(root-LChild=NULL&root-RChild=NULL)printf(%c ,root-data);Pre(root -LChild);Pre(root -RChild);int LeafCount(BiTree &T) int num1,num2,num3; if(!T) return
6、 0; if(T-LChild=NULL & T-RChild=NULL) return 1; num1=LeafCount(T-LChild); num2=LeafCount(T-RChild); num3=num1+num2; return (num3);void main() int i;BiTree T;printf(创建先序遍历序列二插树);CreateBiTree(&T);star:printf(n请选择您要进行的操作:n);printf(1,显示先序遍历序列n);printf(2,显示中序遍历序列n);printf(3,显示后序遍历序列为n);printf(4,显示前序叶子节点及
7、其个数n);scanf(%d,&i);switch (i)case 1:printf(先序遍历序列为:); PreOrder(T);printf(n);goto star;break;case 2:printf(中序遍历序列为:); InOrder(T);printf(n);goto star;break;case 3:printf(后序遍历序列为:); PostOrder(T);printf(n);goto star;break;case 4:printf(前序遍历的叶子结点是:);Pre(T);printf(n);printf(前序遍历的叶子结点个数是:); printf(%d,LeafC
8、ount(T);printf(n);printf(n);goto star;break; 4 测试数据与实验结果(可以抓图粘贴) 5 结果分析与实验体会主要遇到的问题就是用switch语句时不知道怎么反回主菜单,后来查找看书了解到可以用goto语句跳出返回到主菜单。创建二叉树参考程序#include #include #include typedef char DataType;typedef struct NodeDataType data;struct Node *LChild;struct Node *RChild;BiTNode, *BiTree;void CreateBiTree(B
9、iTree *bt)char ch;ch = getchar(); if(ch=.) *bt=NULL; else *bt=(BiTree)malloc(sizeof(BiTNode); /生成一个新结点 (*bt)-data=ch; CreateBiTree(&(*bt)-LChild); /生成左子树 CreateBiTree(&(*bt)-RChild); /生成右子树void Visit(char ch)printf(%c ,ch);void PreOrder(BiTree root) /*先序遍历二叉树, root为指向二叉树(或某一子树)根结点的指针*/if (root!=NULL)Visit(root -data); /*访问根结点*/PreOrder(root -LChild); /*先序遍历左子树*/PreOrder(root -RChild); /*先序遍历右子树*/void main()BiTree T; printf(创建先序遍历序列二插树); CreateBiTree(&T);printf(先序遍历序列为:);PreOrder(T);getch();
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。