1、 数据结构数据结构课程设计报告课程设计报告 课程设计题目:课程设计题目:二叉排序树的相关操作二叉排序树的相关操作 学生姓名学生姓名 : 专专 业业 : 班班 级级 : 学学 号号 : 指导教师指导教师 : 2012 年年 06 月月 23 日日 1 摘要:摘要: 数据结构是研究数据之间关系的一门科学,我们称这一关系为数据的逻辑结构, 简称数据结构。当数据的逻辑结构确定以后,数据在物理空间中的存储方式,称 为数据的存储结构。 同一逻辑结构可以具有不同的存储结构, 因而有不同的算法。 本次课程设计, 程序中的数据采用 “二叉树结构” 。 具体采用的是 “二叉排序树” , 并且使用“一维数组”作为其
2、存储结构。一维数组顺序表存储结构是用一组地址 连续的存储单元依次自左而右、自上而下存储二叉排序树的结点元素;本课程设 计实现了二叉排序树的创建、查找、插入、删除,中序遍历输出等基本操作,完 美地实现了二叉排序树的大部分功能。 关键词:二叉排序树的创建;中序遍历输出;插入结点;查找结点;删除结点 2 一、一、 课程设计目的:课程设计目的: 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理 论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生 适应实际,实践编程的能力。 二、二、 内容设计要求:内容设计要求: 二叉排序树的相关操作 要求:完成二叉排序树的建立、查
3、询、插入和删除操作 三、三、概要设计概要设计: 1.菜单设计:菜单设计: 为了实现二叉排序树相关操作的管理,设计一个包含多个子菜单项的主菜 单,子程序以链接系统的各项子功能,方便用户使用本程序。本系统主菜单界面 如下图所示: 2.存储结构设计:存储结构设计: 用二叉链式存储类型存储二叉树的结点结构。二叉树的链表中结点至少包 含 3 个域:数据域、左孩子指针域和右孩子指针域。 typedef struct bitreenode/ 二叉树结点结构类型 int data; struct bitreenode *lchild; struct bitreenode *rchild; bitreenode
4、 ,*bitree; 3. 系统系统功能设计功能设计: 本系统设置了 5 子功能菜单,5 个子功能的设计描述如下。 (1) 建立二叉排序树,由函数 void createbst( )来实现。 (2) 查找节点,由函数 int searchbst(bitree root,int data)来实现。 (3) 插入节点,由函数 void insertbst(bitree *root,int data)来实现。 (4) 删除节点,由函数 bitreenode *deletebst(bitree t,int k)来实现。 3 四、四、目与流程图目与流程图: 题目题目: 二叉排序树的相关操作 流程图流程图: 输出菜单 开始 输入选择的操作 (0、1、2、3、4) n4|ndata=data) return p-data; if(p-datadata) p=p-lchild; else p=p-rchild; return 1000; void insertbst(bitree *ro