- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课 程 设 计
课程名称 数据结构课程设计
题目名称 二叉排序树的实现
学 院 应用数学学院
专业班级
学 号
学生姓名
指导教师
2016 年 12 月 26 日
1.设计任务
实现二叉排序树,包括生成、插入,删除;
对二叉排序树进行先根、中根、和后根非递归遍历;
每次对树的修改操作和遍历操作的显示结果都需要在屏幕上
用树的形状表示出来。
分别用二叉排序树和数组去存储一个班(50人以上)的成员信
息(至少包括学号、姓名、成绩3项),对比查找效率,并说明
为什么二叉排序树效率高(或者低)。
2. 函数模块:
2.1.主函数main模块功能
1.通过bstree CreatTree()操作建立二叉排序树。
2.在二叉排序树t中通过操作bstree InsertBST(bstree t,int
key,nametype name,double grade)插入一个节点。
3. 从二叉排序树t中通过操作void Delete(bstree p)删除任意节点。
4. 在二叉排序树t中通过操作bstnode *SearchBST(bstree t,keytype key)查找节点。
5. 在二叉排序树t中通过操作p=SearchBST(t,key)查询,并修改节点信息
6. 非递归遍历二叉排序树。
7. 定义函数void compare()对数组和二叉排序树的查找效率进行比较比较。
2.2创建二叉排序树CreatTree模块
从键盘中输入关键字及记录,并同时调用插入函数并不断进行插入。最后,返回根节点T。
2.3删除模块:
二叉排序树上删除一个阶段相当于删去有序系列中的一个记录,只要在删除某个节点之后依旧保持二叉排序树的性质即可。假设二叉排序树上删除节点为*p(指向节点的指针为p),其双亲节点为*f(节点指针为f)。若*p节点为叶子节点,则即左右均为空树,由于删去叶子节点不破坏整棵树的结构,则只需修改其双亲节点的指针即可;若*p节点只有左子树或只有右子树,此时只要令左子树或右子树直接成为其双亲节点*f的左子树即可;若*p节点的左子树和右子树均不为空,其一可以令*p的左子树为*f的左子树,而*p的右子树为*s的右子树,其二可以令*p的直接前驱(或直接后继)替代*p,然后再从二叉排序树中删去它的直接前驱(或直接后继)。在二叉排序树中删除一个节点的算法为
void DeleteData(bstree t,keytype key)
若二叉排序树t中存在关键字等于key的数据元素,则删除该数据元素节点,并返回TRUE,否则返回FALSE。
2.4插入模块
二叉排序树是一种动态树表,其特点是树的结构通常不是一次生成的,而是在查找的过程中,当树中不存在关键字等于给定值得节点时在进行插入。新插入的节点一定是一个新添加的叶子节点,并且是查找不成功时查找路径上访问的最后一个节点的左孩子或右孩子的节点。一个无序系列可以通过构造一棵二叉排序树而变成一个有序系列,构造树的过程即为对无序系列进行排序的过程, 并且每次插入的节点都是二叉排序树上新的叶子节点,则在进行插入操作时,不必移动其他节点,仅需改变某个节点的指针由空变为非空即可。二叉排序树的插入算法为
bstree InsertBST(bstree t,int key,nametype name,double grade)
若二叉排序树中不存在关键字等于key的数据元素时,插入元素并返回TRUE。
2.5查找模块
二叉排序树又称二叉查找树,当二叉排序树不为空时,首先将给定的值和根节点的关键字比较,若相等则查找成功,否则将依据给定的值和根节点关键字之间的大小关系,分别在左子树或右子树上继续进行查找。为此定义一个二叉排序树的查找算法为
bstnode *SearchBST(bstree t,keytype key)
在根指针t所指向的二叉排序树中查找关键字等于key的数据元素,如成功,返回指向该元素节点的指针,否则返回空指针。
2.6效率比较compare模块
void compare()对数组和二叉排序树的查找效率进行比较比较。
2.7二叉排序树的遍历
先序遍历也叫做 HYPERLINK /view/2872148.htm \t _blank 先根遍历。首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树,如果二叉树为空则返回。其实过程为:先遍历左子树root-left-left-left...-null,由于是先序遍历,因此一遇到节点,便需要立即访问;由于一直走到最左边后,需要逐步返回到父节点
您可能关注的文档
- 第二编现代广告学教程电子教案.ppt
- 第二单元课题一电气控制系统图.ppt
- 第二讲、小数意义和读写.pptx
- 第二讲新制度经济学与中国经济改革转型.ppt
- 第二届新生C语言竞赛解题报告.pdf
- 第二届中国“互联网+”大学生创新创业大赛解读.pdf
- 第二期知识竞赛题库--选择题.pdf
- 第二十三讲吉登斯社会学理论.ppt
- 第二十四讲布迪厄社会学理论.ppt
- 第二章__公安刑事法律文书.ppt
- 2024年USB电话商务管理系统项目可行性研究报告.docx
- [白城]2024年吉林白城市通榆县事业单位面向下半年应征入伍高校毕业生招聘笔试历年参考题库(频考点试.docx
- [甘肃]2024年甘肃省地质矿产勘查开发局第一地质矿产勘查院招聘52人笔试历年参考题库(频考点试卷).docx
- 2024年端子机刀片刀模项目可行性研究报告.docx
- 2024年情侣相框项目可行性研究报告.docx
- [玉溪]2024下半年云南玉溪市事业单位招聘工作人员189人笔试历年参考题库(频考点试卷)解题思路附.docx
- 2024至2030年双面脚轮项目投资价值分析报告.docx
- [湖南]2024年湖南劳动人事职业学院招聘32人笔试历年参考题库(频考点试卷)解题思路附带答案详解.docx
- [湖南]2024年湖南建筑高级技工学校(湖南建设中等职业学校)招聘17人笔试历年参考题库(频考点试卷.docx
- [烟台]2024年山东烟台市市场监督管理局所属事业单位招聘19人笔试历年参考题库(频考点试卷)解题思.docx
文档评论(0)