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

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

ID:47401998

大小:229.00 KB

页数:17页

时间:2019-07-04

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

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

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

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

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)insert(ptr->left,item);elseinsert(ptr->r

4、ight,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->data==item)returnptr;elseif(itemdata)findy(ptr->

5、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:intdata;node*left;node*right;};五、程序实现1、调入文件#include2、主函数

6、intmain(){intt,i=0,j;cout<<"10计科一班杨旭(1010311114)"<>t;cout<<"输入"<>j;node*x=newnode(j);for(;i>j;x->insert(x,j);}cout<<"中序遍历为:";x->inorder(x);//作中序遍历cout<<"";cout<<"2.二叉排序树T的元素查找和删除:"<

7、<<"输入操作(当输入-1时程序结束):"<>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<<"无"<>j;}return0;}六、程序编码#includeusingnamesp

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

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

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