欢迎来到天天文库
浏览记录
ID:15893205
大小:316.00 KB
页数:36页
时间:2018-08-06
《用顺序和二叉链表作存储结构实现二叉排序树全代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、二叉排序树的实现数学与计算机学院课程设计说明书课程名称:数据结构课程设计课程代码:6013799题目:二叉排序树的实现年级/专业/班:10级计科(3)班学生姓名:学 号:开始时间:2012年12月25日完成时间:2013年01月8日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书撰写质量(45)总分(100)指导教师签名:年月日二叉排序树的实现目录1引言11.1问题的提出11.2任务与分析12程序的主要功能22.1二叉排序树的建立22.2二叉排序树的中序遍历22
2、.3二叉排序树中元素的查找22.4二叉排序树中元素的删除33程序运行平台44总体设计55程序类的说明66模块96.1中序遍历模块96.2删除模块97系统测试127.1顺序存储127.2二叉链表存储168结论19总 结19心得体会20参考文献21全部代码22二叉链表结构c22二叉链表结构c++26顺序存储结构c29二叉排序树的实现摘要数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。本课程设计中的二叉排序树,可以用顺序存储和链式存储两种算法计算。本课程设
3、中的二叉排序树,一共要实现四项基本的功能。它们分别是二叉搜索树的创建、中序遍历、查找结点和删除结点。关键词:二叉排序树;中序遍历;搜索结点;删除结点;CC++二叉排序树的实现1引言1.1问题的提出研究关于如何创建二叉排序树并对树进行遍历,查找和删除等操作,同时关注用顺序和二叉链表作存储结构带来的区别。1.2任务与分析用顺序和二叉链表作存储结构实现二叉排序树:(1)以回车('')为输入结束标志,输入数列L,生成一棵二叉排序树T;(2)对二叉排序树T作中序遍历,输出结果;(3)输入元素x,查找二
4、叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”。-33-二叉排序树的实现2程序的主要功能2.1二叉排序树的建立建二叉树的结点至少应当包含三个域,分别存放结点的数据data,左子女结点指针leftChild和右子女结点指针rightChild。整个二叉树的链表要有一个表头指针,它指向二叉树的根结点,其作用是当作树的访问点从空的二叉排序树开始,经过一系列的查找插入操作以后,生成了一棵二叉排序树。根据二叉排序树的定义,建立一棵二叉排序树的过程是按照待排序序列
5、元素的先后次序,不断动态生成二叉树的结点,逐个插入到二叉树中。若p为根结点指针,b为当前待插入元素,其过程可以描述为:若为空树(p=nil),动态生成一个结点,其数据域为当前待插入元素b,左、右指针域为“空”,p指向该结点。若非空树,比较b与根结点数据data(p)如果b6、次调用二叉排序树的插入算法。2.2二叉排序树的中序遍历中序遍历二叉树算法的框架是:若二叉树为空,则空操作;否则中序遍历左子树(L);访问根结点(V);中序遍历右子树(R)。中序遍历二叉树也采用递归函数的方式,先访问左子树,然后访问根结点,最后访问右子树.直至所有的结点都被访问完毕2.3二叉排序树中元素的查找-33-二叉排序树的实现在二叉排序树上进行查找,是一个从根结点开始,沿某一个分支逐层向下进行比较判等的过程。它可以是一个递归的过程。假设我们想要在二叉排序树中查找关键码为x的元素,查找过程从根结7、点开始。如果根指针为NULL,则查找不成功;否则用给定值x与根结点的关键码进行比较;如果给定值等于根结点的关键码,则查找成功,返回查找成功的信息,并报告查找到的结点地址。如果给定值小于根结点的关键码,则继续递归查找根结点的左子树;否则,递归搜索根结点的右子树。2.4二叉排序树中元素的删除对于二叉排序树,删去树上的一个结点相当于删去有序序列中的一个记录,只要在删除某个结点之后依旧保持二叉排序树的特性即可。假设在二叉排序树上被删除结点为*p(指向结点的指针是p),其双亲结点为*f(结点指针为f),且不8、失一般性,可设*p是*f的左孩子,若*p结点为叶子结点,即p和l均为空,只需修改其双亲结点指针即可。若*p结点只有左子树或者只有右子树,只要令左子树或右子树直接成为其双亲结点即可。若左子树和右子树都不为空,令*p的直接前驱替代*p,然后从二叉排序树中删除它的直接前驱,即可。-33-二叉排序树的实现3程序运行平台VC++6.0。具体操作如下:新建Win32ConsoleApplication工程,添加源文件C++SourseFile,再编译,链接,执行。-33-二叉排序树的实现4总体
6、次调用二叉排序树的插入算法。2.2二叉排序树的中序遍历中序遍历二叉树算法的框架是:若二叉树为空,则空操作;否则中序遍历左子树(L);访问根结点(V);中序遍历右子树(R)。中序遍历二叉树也采用递归函数的方式,先访问左子树,然后访问根结点,最后访问右子树.直至所有的结点都被访问完毕2.3二叉排序树中元素的查找-33-二叉排序树的实现在二叉排序树上进行查找,是一个从根结点开始,沿某一个分支逐层向下进行比较判等的过程。它可以是一个递归的过程。假设我们想要在二叉排序树中查找关键码为x的元素,查找过程从根结
7、点开始。如果根指针为NULL,则查找不成功;否则用给定值x与根结点的关键码进行比较;如果给定值等于根结点的关键码,则查找成功,返回查找成功的信息,并报告查找到的结点地址。如果给定值小于根结点的关键码,则继续递归查找根结点的左子树;否则,递归搜索根结点的右子树。2.4二叉排序树中元素的删除对于二叉排序树,删去树上的一个结点相当于删去有序序列中的一个记录,只要在删除某个结点之后依旧保持二叉排序树的特性即可。假设在二叉排序树上被删除结点为*p(指向结点的指针是p),其双亲结点为*f(结点指针为f),且不
8、失一般性,可设*p是*f的左孩子,若*p结点为叶子结点,即p和l均为空,只需修改其双亲结点指针即可。若*p结点只有左子树或者只有右子树,只要令左子树或右子树直接成为其双亲结点即可。若左子树和右子树都不为空,令*p的直接前驱替代*p,然后从二叉排序树中删除它的直接前驱,即可。-33-二叉排序树的实现3程序运行平台VC++6.0。具体操作如下:新建Win32ConsoleApplication工程,添加源文件C++SourseFile,再编译,链接,执行。-33-二叉排序树的实现4总体
此文档下载收益归作者所有