




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江大学城市学院实验报告课程名称 数据结构与算法 实验项目名称 实验五 二叉搜索树的基本操作 学生姓名 专业班级 计算0 学号 30 实验成绩 指导老师(签名 ) 日期 一. 实验目的和要求1掌握二叉搜索树的基本概念。2掌握二叉搜索树基本操作的实现。二. 实验内容1 设在一棵二叉搜索树的每个结点的data域中,含有关键字key域和统计相同关键字元素个数的count域。当向该树插入一个元素时,若树中已有相同关键字值的结点,则使该结点的count域值增1,否则由该元素值生成一个新结点插入到该树中,并使其count域置为1。当向该树删除一个元素时,若树中该元素结点的count域值大于1,则使该结点的count域值减1,否则(count域值等于1)删除该结点。请编写程序实现该二叉搜索树的下述基本操作: 初始化该二叉搜索树void InitBSTree(BTreeNode *&bst); 以广义表形式输出该二叉搜索树(每个结点输出内容包括关键字值与相同元素个数值)void PrintBSTree(BTreeNode *bst); 插入一个元素到该二叉搜索树(用非递归算法实现) void Insert (BTreeNode *&bst, ElemType item); 从二叉搜索树中删除某个元素(用非递归算法实现) int Delete (BTreeNode *&bst , ElemType item)。 求该二叉搜索树的最大关键字值(用非递归算法实现)ElemType MaxBSTree(BTreeNode *bst)。把二叉搜索树的结构定义及基本操作实现函数存放在文件BSTree.h中。2 建立主程序文件test5.cpp,在主函数main()中通过调用BSTree.h中的函数进行测试。提示:可以在主函数中首先初始化二叉搜索树;然后从键盘输入数据,通过循环调用插入算法建立二叉搜索树;再以广义表形式输出该二叉搜索树;输出二叉搜索树中的最大结点值;最后调用删除算法删除某元素,并输出删除后的二叉搜索树。3 填写实验报告,实验报告文件取名为report5.doc。4 上传实验报告文件report5.doc与源程序文件BSTree.h及test5.cpp到Ftp服务器上你自己的文件夹下。二. 函数的功能说明及算法思路void InitBSTree(BTreeNode *&bst):初始化该二叉搜索树void PrintBSTree(BTreeNode *bst):通过指针对树遍历,从而输出二叉树void Insert (BTreeNode *&bst, ElemType item):通过比较所插入数于树左右结点比较插入适当的位置。int Delete (BTreeNode *&bst , ElemType item):用非递归算法实现删除某个元素。ElemType MaxBSTree(BTreeNode *bst):通过各个结点的比较查找最大数。 包括每个函数的功能说明,及一些重要函数的算法实现思路三. 实验结果与分析包括运行结果截图等当搜索二叉树中有相同的数时,发现少了一个,求解五. 心得体会 通过此次编程,我就觉的除了删除某个结点的程序有些的难度,尤其是要用非递归的算法来编写,本生编程能力就比较弱,需要和同学一起探讨,交流才能勉强写出来,不过这也是对自己的锻炼。【附录-源程序】Test5.Cpp#include#include#includetypedef int ElemType;struct BTreeNodeElemType data,count;BTreeNode* left;BTreeNode* right;#includeBSTree.hvoid main()int data,item;BTreeNode* bst;InitBSTree(bst);cout请输入二叉树(data=0结束)data;while(data!=0)Insert(bst,data);cindata;cout输出二叉树为:;PrintBSTree(bst);coutendl;cout输出二叉树中最大元素:endl;coutMaxBSTree(bst)endl;cout删除二叉树中一个元素endl;coutitem;Delete (bst,item);PrintBSTree(bst);coutendl;BSTree.hvoid InitBSTree(BTreeNode *&bst)bst=NULL;void PrintBSTree(BTreeNode *bst)if(bst!=NULL)cout(data,countleft!=NULL|bst-right!=NULL)coutleft);if(bst-right!=NULL)coutright);cout);void Insert(BTreeNode *&bst, ElemType item)BTreeNode* t=bst,*parent=NULL;while(t!=NULL)parent=t;if(itemdata)t=t-left;elseif(itemt-data)t=t-right;elset-count+;return;BTreeNode* p=new BTreeNode;p-data=item;p-count=1;p-left=p-right=NULL;if(parent=NULL)bst=p;else if(itemdata)parent-left=p;elseparent-right=p;int Delete (BTreeNode *&bst , ElemType item)BTreeNode* parent=NULL;if(bst=NULL)cout不存在该结点data=item)if(p-count!=1)p-count-;return true;elseif(p-right=NULL&p-left!=NULL)if(parent=NULL)bst=bst-left;delete p;return true;if(parent-datap-data)parent-left=p-left;elseparent-right=p-left;return true;if(p-left=NULL&p-right!=NULL)if(parent=NULL)bst=bst-right;delete p;return true;if(parent-datap-data)parent-left=p-right;elseparent-right=p-right;return true;if(p-left!=NULL&p-right!=NULL)BTreeNode* q=bst;while(p-right!=NULL)p=p-right;q-data=p-data;dele
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能仪表物联网行业当前竞争格局与未来发展趋势分析报告
- 2025年棕榈油行业当前发展现状及增长策略研究报告
- 收入准则培训课件模板
- 支气管扩张症课件
- 支原体培训课件
- 播音演绎基础知识培训课件
- 2025年新修订《安全生产法》安全教育培训考核试卷及答案
- 2025年注册测绘师必考题含答案
- (2025)医院感染管理知识考试题及参考答案
- (2025)全国普法知识考试题库及参考答案
- 收费站停电应急预案
- 工学一体化培养模式培训
- 急性呼吸窘迫综合征的护理课件(演示)
- 就诊指南培训课件
- 《无创呼吸机》课件
- 教科版一年级《科学》上册全册教案(含教学计划)全套教学设计
- 新型材料在脉冲变压器中的应用及发展
- 2025届新高考地理冲刺热点复习区位评价类综合分析题解题技巧
- 2024年小学五年级数学教学工作总结样本(4篇)
- 肉猪养殖技术培训
- 电信服务合同签订时间
评论
0/150
提交评论