ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:61.88KB ,
资源ID:18201347      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18201347.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计二叉树的基本操作Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计二叉树的基本操作Word文档格式.docx

1、三、数据结构和算法设计用一个字符型保存节点数据,分别定义两个BiTree.h 中实现相关的功能。3.1 二叉链表的设计1.typedefstruct BiNode 2.chardata;3.structBiNode* lchild;/左孩子4.BiNode* rchild;右孩子5.BiTree;struct BiNode 类型的指针来指向左孩子和右孩子。在3.2 队列的实现typedef structElemType* data;int head; /队头指针int tail;队尾指针 SqQueue;队列主要用于二叉树遍历过程中的层序遍历,从根节点开始分别将左右孩子放入队列,然后从对头开始

2、输出。队列的相关操作封装在 SqQueue.h 中,包括入队、出队、判断队列是否为空等操作。四、全局函数的设计本程序中应用了一些全局函数,本着用到那个函数就把哪个函数设为全局函数的原则,抽象 出了以下全局函数:4.1 全局函数列表(1)BiTree* createBinaryTree(BiTree* b)本函数用于建立二叉树(2)void Traverse(BiTree* b)本函数用于遍历二叉树(3)void PreOrderTraverse(BiTree* b)本函数用于前序遍历二叉树(4)void InOrderTraverse(BiTree* b)本函数用于中序遍历二叉树(5)void

3、 PostOrderTraverse(BiTree* b)本函数用于后序遍历二叉树(6)void LevelOrderTraverse(BiTree* b)本函数用于层序遍历二叉树(7)void getLeavesNum(BiTree* b)本函数用于统计叶子结点个数(8)int getHeight(BiTree* b)本函数用于求二叉树的深度(9)void swap(BiTree* b)本函数用子树交换(10)void displayMenu()本函数用于展示菜单4.2 全局函数在具体系统中的分布BiTree.h此文件为二叉树的头文件,包含上述所有全局函数五、功能实现二叉树的基本操作这个程序

4、的主要功能就是建立二叉树, 然后运用先序、 中序等遍历方法遍历二叉树, 然后还有统计二叉树的叶子结点个数、求二叉树的深度以及进行子树的交换。5.1 二叉树的基本操作流程图如下菜单界面如下:5.2 二叉树的基本操作的代码如下5.2.1二叉树的建立1./ 按照前序输入二叉树结点的值, “ #”表示空2.BiTree* createBinaryTree(BiTree* b) 3.char ch; / 定义变量用于储存输入的字符scanf( %c , &ch);if (ch = # ) 6.b = NULL;7.8.else 9.if (b = (BiTree*)malloc( sizeof (BiT

5、ree) != NULL) / 如果内存分配成功就执行下面操作10./ 生成根节点11.b-data = ch;12./ 构造左子树13.lchild=createBinaryTree(b-lchild);14./ 构造右子树15.rchild=createBinaryTree(b-rchild);16.17.18.return b;19.5.2.2二叉树的遍历如图所示选择遍历后有三种方案可供选择:1) 前序遍历void PreOrderTraverse(BiTree* b) if (b = NULL) return ;/ 首先打印结点数据printf( %c , b-data);/ 再先序遍

6、历左子树PreOrderTraverse(b-/ 最后先序遍历右子树52) 中序遍历/ 中序遍历void InOrderTraverse(BiTree* b) / 首先中序遍历左子树InOrderTraverse(b-/ 再打印结点数据/ 最后中序遍历右子树3) 后序遍历/ 后序遍历void PostOrderTraverse(BiTree* b) / 首先后序遍历左子树PostOrderTraverse(b-/ 再后序遍历右子树/ 最后打印结点数据4) 层序遍历1./ 层序遍历2.void LevelOrderTraverse(BiTree* b) 3.SqQueue* s = initSq

7、Queue();4.BiTree* temp;5.if (b) 6.append(s, *b);7.while (!isEmpty(s) 5.2.3统计叶子结点个数/ 统计叶子节点intcount; / 全局变量,如果出现叶子结点就加一voidgetLeavesNum(BiTree* b) if (b) if (!lchild & !rchild) count+;getLeavesNum(b-5.3.4求二叉树的深度1./ 求二叉树的深度2.int getHeight(BiTree* b) 3.int leftHeight, rightHeight;4.if (!b) 5.return 0;6

8、.7.leftHeight = getHeight(b-8.rightHeight = getHeight(b-9.return leftHeight rightHeight ? leftHeight + 1 : rightHeight + 1;10.5.2.5子树交换1. / 子树交换BiTree* temp; / 临时变量,用于交换void swap(BiTree* b) temp = b-lchild;lchild = b-rchild;rchild = temp;swap(b-部分运行结果截图如下:建立二叉树:统计叶子节点个数:求二叉树的深度:六、参考文献1.Stephen Prata. C Primer Plus ( 第 6 版 ) 中文版 . 人民邮电出版社 . 2016 年2.CSDN 博客: 3.谭浩强 .C 程序设计(第四版) 清华大学出版社 .4. 严蔚敏数据结构c 语言版 第二版 人民邮电出版社

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1