数据结构二叉排序树的实现(用顺序和二叉链表作存储结构)课程设计.doc

数据结构二叉排序树的实现(用顺序和二叉链表作存储结构)课程设计.doc

ID:53117885

大小:199.50 KB

页数:17页

时间:2020-04-01

数据结构二叉排序树的实现(用顺序和二叉链表作存储结构)课程设计.doc_第1页
数据结构二叉排序树的实现(用顺序和二叉链表作存储结构)课程设计.doc_第2页
数据结构二叉排序树的实现(用顺序和二叉链表作存储结构)课程设计.doc_第3页
数据结构二叉排序树的实现(用顺序和二叉链表作存储结构)课程设计.doc_第4页
数据结构二叉排序树的实现(用顺序和二叉链表作存储结构)课程设计.doc_第5页
资源描述:

《数据结构二叉排序树的实现(用顺序和二叉链表作存储结构)课程设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、. ..一、设计题目1、题目:二叉排序树的实现  (用顺序和二叉链表作存储结构 )2、要求(功能):1) 以回车('')为输入结束标志,输入数列L,生成一棵二叉排     序树T;2) 对二叉排序树T作中序遍历,输出结果;3) 输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”;二、需求分析建立排序二叉树,主要是建立节点来存储输入的数据,需要建立函数来创造排序二叉树。该题目包括三方面的内容:一个是二叉排序树的建立,而是二叉树的中序遍历,三是二叉树元素的查找并删除。三、数据结构设计在写算法之前

2、,应对数据结构进行设计。本体主要会用到指针变量,插入节点函数和建立二叉树,以及中序遍历函数,还有一些输入输出语句。四、算法设计算法设计思想..二插链表作存储结构:建立二插排序树采用边查找边插入的方式。查找函数采用递归的方式进行查找。如果查找成功则不应再插入原树,否则返回当前结点的上一个结点。然后利用插入函数将该元素插入原树。对二叉树进行中序遍历采用递归函数的方式。在根结点不为空的情况下,先访问左子树,再访问根结点,最后访问右子树。删除结点函数,采用边查找边删除的方式。如果没有查找到,则不对树做任何的修改;如果查找到结点,则分四种情况分别进行讨论:1、该结

3、点左右子树均为空;2、该结点仅左子树为空;3、该结点仅右子树为空;4、该结点左右子树均不为空。在进行算法设计时,应将题目分为五个函数模块:1、中序遍历,符合升序输出voidinorder(node*&root){if(root!=NULL){inorder(root->left);cout<data<<'';inorder(root->right);}}..2、在查找树中插入元素voidinsert(node*&ptr,intitem){if(ptr==NULL)ptr=newnode(item);elseif(itemdata

4、)insert(ptr->left,item);elseinsert(ptr->right,item);}3、在查找树中查找元素node*find(node*&ptr,intitem){if(ptr==NULL)returnNULL;if(ptr->data==item)returnptr;elseif(itemdata)find(ptr->left,item);elsefind(ptr->right,item);}..4、在查找树中查找肯定存在的元素,并返回其引用node*&findy(node*&ptr,intitem){if(ptr->

5、data==item)returnptr;elseif(itemdata)findy(ptr->left,item);elsefindy(ptr->right,item);}node*rl(){returnleft;}node*rr(){returnright;}5、删除指定值为所在结点voiddele(node*&ptr)..{if(ptr->rl()==NULL&&ptr->rr()==NULL)ptr=NULL;elseif(ptr->rr()==NULL)ptr=ptr->rl();elseptr=ptr->rr();}private

6、:intdata;node*left;node*right;};五、程序实现1、调入文件#include2、主函数intmain(){intt,i=0,j;cout<<"10计科一班杨旭(1010311114)"<>t;cout<<"输入"<>j;node*x=newnode(j);for(;i>j;x->insert(x,j);}cou

7、t<<"中序遍历为:";x->inorder(x);//作中序遍历cout<<"";cout<<"2.二叉排序树T的元素查找和删除:"<>j;while(j!=-1){node*t=x->find(x,j);//定位结点if(t!=NULL)..{node*&y=x->findy(x,j);x->dele(y);cout<<"中序遍历为:";x->inorder(x);}elsecout<<"无"<

8、ndl;cin>>j;}return0;}六、程序编码#include

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。