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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(实验2二叉排序树查找.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

实验2二叉排序树查找.docx

1、实验2二叉排序树查找1. 建立一棵二叉排序树,存储学生信息,并实现查询功能#include#includeusing namespace std;static int a,b;typedef struct node int grade; string name; int no; struct node *lchild,*rchild;BSTNode; /代表二叉排序树的结点定义typedef BSTNode *BSTree; /定义二叉排序树static BSTNode *t; /定义一个临时结点BSTNode * SearchBST(BSTree T, int no) if( ) Searc

2、hBST(T-lchild, ); /补充语句,根据学号向左子树搜索 if(T- = ) /补充语句,学号相等,查询成功,获得当前的T结点 t=T; if(T-rchild!=NULL&T-grade!=a&T-rchild=NULL&T-rchild-no=no) t=T-rchild; if(T-rchild!=NULL&T-rchild-lchild!=NULL) SearchBST(T-rchild, ); /补充语句,根据学号向右子树搜索 if(T-rchild!=NULL&T-grade=b) a=T-rchild-grade; SearchBST(T-rchild,no); re

3、turn t;void InserBST(BSTree *T,int grade,string name,int no) /此函数用来插入二叉排序树中的结点来建立二叉排序树 BSTNode *p,*q; if( (*T) =NULL) (*T)= ; /补充语句,创建一个新结点 (*T)-grade= ;(*T)-name= ;(*T)- = ; /以上三条语句补充完整,创建学号,姓名,成绩构成的学生信息 (*T)-lchild=(*T)-rchild= ; /补充语句,将被插入的新结点设置成叶结点标志 else p=(*T); while(p) q=p; if( ) /补充判断条件,若gra

4、de成绩值小于当前结点,向左子树前进搜索 p=q-lchild; else if( ) /补充判断条件,若grade成绩值大于当前结点,向右子树前进搜索 ; p=new BSTNode; p-grade=grade; p-name=name; p-no=no; p-lchild=p-rchild=NULL; if(q-gradegrade) q-lchild=p; else q-rchild=p; BSTree CreateBST(void) BSTree T=NULL; int grade,no; string name; cinno; cinname; cingrade; b=a=grad

5、e; while(grade) ; /补充语句,调用InserBST函数向二叉排序树插入结点 cinno; cin ; /补充语句 cin ; /补充语句 return T;void ListBinTree(BSTree T)/此函数用于按顺序输出二叉排序树(以中序遍历方式输出即可得到有序) if(T-lchild!=NULL) ; /补充语句,递归遍历左子树 coutno name gradeendl; /输出根(双亲)结点/补充一组语句,向右子树递归遍历void main() BSTree T; BSTNode *p; int no; cout请输入学生信息(输入0为结束标志):n; co

6、ut学号 姓名 成绩n; T= ; /补充语句调用建立二叉排序函数 cout按成绩构建二叉排序树,存储学生数据成功!nn; cout 52 n; cout / n; cout 26 66 n; cout / n; cout 12 45 99 n; cout / / n; cout 33 50 89 n; cout / n; cout 87 n; coutn按成绩由低到高排序:; coutn 学号 姓名 成绩 n; ; /补充语句调用排序函数 printf(n); coutno; p= (T,no); /补充语句调用查询函数 if(p=NULL) cout没有找到” no”! n; else c

7、outn 学号 姓名 成绩n; coutno name gradeendl; #include#includeusing namespace std;static int a,b;typedef struct node int grade; string name; int no; struct node *lchild,*rchild;BSTNode; /代表二叉排序树的结点定义typedef BSTNode *BSTree; /定义二叉排序树static BSTNode *t; /定义一个临时结点BSTNode * SearchBST(BSTree T, int no) if(T-lchi

8、ld!=NULL) SearchBST(T-lchild,no); /补充语句,根据学号向左子树搜索 if(T-no=no) /补充语句,学号相等,查询成功,获得当前的T结点 t=T; if(T-rchild!=NULL&T-grade!=a&T-rchild=NULL&T-rchild-no=no) t=T-rchild; if(T-rchild!=NULL&T-rchild-lchild!=NULL) SearchBST(T-rchild,no); /补充语句,根据学号向右子树搜索 if(T-rchild!=NULL&T-grade=b) a=T-rchild-grade; SearchB

9、ST(T-rchild,no); return t;void InserBST(BSTree *T,int grade,string name,int no) /此函数用来插入二叉排序树中的结点来建立二叉排序树 BSTNode *p,*q; if( (*T) =NULL) (*T)=new BSTNode; /补充语句,创建一个新结点 (*T)-grade=grade;(*T)-name=name;(*T)-no=no; /以上三条语句补充完整,创建学号,姓名,成绩构成的学生信息 (*T)-lchild=(*T)-rchild=NULL; /补充语句,将被插入的新结点设置成叶结点标志 else

10、 p=(*T); while(p) q=p; if(p-gradegrade) /补充判断条件,若grade成绩值小于当前结点,向左子树前进搜索 p=q-lchild; else if(p-graderchild;/补充判断条件,若grade成绩值大于当前结点,向右子树前进搜索 p=new BSTNode; p-grade=grade; p-name=name; p-no=no; p-lchild=p-rchild=NULL; if(q-gradegrade) q-lchild=p; else q-rchild=p; BSTree CreateBST(void) BSTree T=NULL;

11、int grade,no; string name; cinno; cinname; cingrade; b=a=grade; while(grade) InserBST(&T,grade,name,no); /补充语句,调用InserBST函数向二叉排序树插入结点 cinno; cinname; /补充语句 cingrade; /补充语句 return T;void ListBinTree(BSTree T)/此函数用于按顺序输出二叉排序树(以中序遍历方式输出即可得到有序) if(T-lchild!=NULL) ListBinTree(T-lchild); /补充语句,递归遍历左子树 cou

12、tno name graderchild!=NULL&T-grade!=a&T-rchild-lchild=NULL) coutrchild-no rchild-name rchild-graderchild!=NULL&T-rchild-lchild=NULL) ListBinTree(T-rchild);if(T-rchild!=NULL&T-grade=b) a=T-rchild-grade; ListBinTree(T-rchild);/补充一组语句,向右子树递归遍历void main() BSTree T; BSTNode *p; int no; cout请输入学生信息(输入0为结束

13、标志):n; cout学号 姓名 成绩n; T=CreateBST(); /补充语句调用建立二叉排序函数 cout按成绩构建二叉排序树,存储学生数据成功!nn; cout 52 n; cout / n; cout 26 66 n; cout / n; cout 12 45 99 n; cout / / n; cout 33 50 89 n; cout / n; cout 87 n; coutn按成绩由低到高排序:; coutn 学号 姓名 成绩 n; ListBinTree; /补充语句调用排序函数 printf(n); coutno; p=SearchBST(T,no); /补充语句调用查询函数 if(p=NULL) cout没有找到 no! n; else coutn 学号 姓名 成绩n; coutno name gradeendl;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2