- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二叉排序树的建立、插入、删除和查找
题目:二叉排序树的建立、插入、删除和查找
完成日期:2010-7-
一、需求分析
运行环境:VC++6.0;语言:C语言;
程序所实现的功能:给出一组关键值,建立相应的二叉排序树,完成:
1结点的删除操作,插入一个新结点的操作
2对给定的值在二叉排序树进行查找;
3随时显示操作的结果。
程序的输入:n个关键字,及要插入,删除,查找的关键字;
程序的输出:操作后的二叉排序树的中序序列即递增序列;
测试数据:1)8 12 5 10 6 11 13 9 (n=8)
2、主要模块:
1)主函数模块
Main()
{
建立n个关键字的二叉排序树并输出;
从二叉树排序树T中删除任意结点,其关键字为x;
在二叉树排序树T中,插入一个结点t,其关键字为key1;
在二叉排序树T中递归查找关键字等于 key2 的数据元素;
查找成功则输出SUCCESS;
查找失败则输出NOSUCCESS;
}
2)创建二叉排序树模块
BiTree CreatBST(int n)
{
建立n个关键字的二叉排序树;
从键盘输入调建立n个关键字依次用InsertBST1(插入函数);
返回根结点T;
输出过程;
}
3)删除模块
DeleteNode(BiTree T, int x)
{
从二叉树排序树T中删除任意结点,其关键字为x;
可以实现删除根结点、叶子结点以及其它任意结点的功能;
}
4)插入模块
void InsertBST1(BiTree T,BiTNode *s)
{
在二叉树排序树T中,插入一个结点s(递归算法);
被CreatBST函数调用;
}
5)查找模块
BiTree SearchBST1(BiTree T,TElemType key)
{
在根指针T所指二叉排序树中递归查找关键字等于 key 的数据元素;
若成功,返回指向该数据元素结点的指针;
否则返回空指针;
}
3、抽象数据类型设计;
对于二叉树排序树而言,每个节点都是由“数据域”、左右 “指针域”三部分组成的,因此将二叉树抽象成一个指向根结点由“关键字,左右孩子”构成 的二叉链表。
三、详细设计
1、二叉排序树数据类型定义;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;//左右孩子指针
} BiTNode,*BiTree;
BiTree T;// 二叉树排序树T
2、主要函数说明:(伪代码及算法设计思想)
void main()
{
T=CreatBST(n); //建立n个关键字的二叉排序树,返回根结点T
//从二叉树排序树T中删除任意结点,其关键字为x
DeleteNode(T, x);
Inorder(T);
//在二叉树排序树T中,插入一个结点t,其关键字为key1
t=(BiTree)malloc(sizeof(BiTNode));
t-data=key1;
t-lchild=NULL; t-rchild=NULL;
InsertBST1(T,t);
Inorder(T);
//在二叉排序树T中递归查找关键字等于 key2 的数据元素
s=SearchBST1(T,key2);
if(s)printf(SUCESS\n);//查找成功
else printf(NOSUCESS\n);//查找失败
}
BiTree SearchBST1(BiTree T, TElemType key)
{//在根指针T所指二叉排序树中递归查找关键字等于 key 的数据元素
//若成功,返回指向该数据元素结点的指针,否则返回空指针;s为返回//指针
if(T==NULL) return NULL;
if(T-data==key) s=T;
else if(T-datakey) //key大于当前结点的关键字 ,则查找左子树
s=SearchBST1(T-lchild,key);
//key小于当前结点的关键字则查找右子树
Else
s=SearchBST1(T-rchild,key);
return s;
}
void Inorder(BiTree T)
{//中序输出二叉树排序树T(非空时)
if(T!=NULL)
{
Inorder(T-lchild);//中序输出左子树
printf(%3d,T-data);//访问结点
Inorder(T-rchild);//中序输出右子树
}
}
void InsertBST1(BiTree T,Bi
您可能关注的文档
- 中药学院中药资源与开发专业设置论证报告.doc
- 中行系统行政职业能力测验模拟试卷一.doc
- 中资银行品牌竞争力分析之我见.doc
- 中西道歉的文化差異.ppt
- 中西方爱情观的冲突-中文系毕业论文.doc
- 中金公司国债逆回购.ppt
- 中银金融商业担保商业计划书范本.doc
- 中风先兆病路径.doc
- 中软华泰等级保护整改解决方案.doc
- 中餐烹饪实施性教学计划.doc
- JT-T-747.4-2020交通运输信息资源目录体系第4部分:公路水路信息资源分类.docx
- 第五章 相交线与平行线.pptx
- 【英语】2021-2022成都市树德实验中学九上10月月考试卷_1695007030044.pdf
- 【英语】2021-2022成都市树德实验中学九上10月月考试卷答案_1695007030044.pdf
- JT-T-310-2020汽车客运站售票管理信息系统规范.docx
- JT-T-448-2021汽车悬架装置检测台.docx
- JT-T-474-2019港口轮胎起重机修理技术规范.docx
- JT-T-478-2017汽车检验机构计算机控制系统规范.docx
- JT-T-155-2021汽车举升机行业标准.docx
- JT-T-4-2019公路桥梁板式橡胶支座.docx
文档评论(0)