二叉排序树算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

沈阳航空航天大学

课程设计报告

课程设计名称:数据结构课程设计课程设计题目:二叉排序树算法

院(系):计算机学院

专业:计算机科学与技术

班级:04010103

学号:2010040101097

姓名:郭胜龙

指导教师:丁一军

此页为任务书

目录

1 课程设计介绍 (1)

1.1课程设计内容 (1)

1.2课程设计要求 (1)

2 课程设计原理 (2)

2.1课设题目粗略分析 (2)

2.2原理图介绍 (2)

2.2.1 功能模块图 (2)

2.2.2 main(主函数) (2)

2.2.3 SearchBST(查找) (3)

2.2.4 InsertBST(插入) (4)

2.2.5 CreatBST(建立) (4)

2.2.6 DeleteBST(删除) (4)

2.2.7 PreOrder(先序遍历) (5)

2.2.8 InOrder(中序遍历) (5)

3 数据结构分析 (7)

3.1存储结构 (7)

3.2算法描述 (7)

4 调试与分析 (12)

4.1调试过程 (12)

4.2程序执行过程 (12)

参考文献 (15)

附录(关键部分程序清单) (16)

沈阳航空航天大学课程设计报告

1 课程设计介绍

1.1 课程设计内容

题目内容:

1.构造二叉排序树;

2.输出该二叉排序树的先序、中序遍历序列;

3.删除该二叉排序树的任意一个结点;

4.输出删除后的二叉排序树的先序、中序遍历序列。

1.2课程设计要求

题目要求:

1.按要求建立不同的二叉排序树;

2.数据自定

3.独立完成课程设计任务

2 课程设计原理

2.1

课设题目粗略分析

根据课设题目要求,拟将整体程序分为七大模块。以下是七个模块的大体分

析:

main ():主函数模块

SearchBST ():查找相应的结点 InsertBST1():插入一个新的结点 CreatBST ():创建一棵二叉排序树 DeleteNode ():删除结点

PreOrder ()对二叉排序树进行先序遍历 InOrder ()对二叉排序树进行中序遍历

2.2 原理图介绍

2.2.1 功能模块图

图2.2.1 功能模块结构图

2.2.2 main (主函数)

功能:连接各个函数,确定他们的执行顺序和条件。

二叉排

序树算法

主模块

查找模块 插入模块 建立模块 删除模块 先序遍历模块 中序遍历模块

图2.2.2主函数流程图

2.2.3 SearchBST (查找)

功能:查找相应的结点。

图2.2.3 查找操作的流程图

开始

选择功能

Choose=1 建立二叉排序树

Choose=2 删除x 结点

Choose=3 先序遍历二叉排

Choose=0 退出

Choose=4 中序遍历二叉排

A

结束

A

Y

Y

开始

T->data==key s=T

T->data>key

s=SearchBST(T->rchild)

s=SearchBST(T->lchild)

N

N

返回s

结束

2.2.4 InsertBST (插入)

功能:插入一个新的结点。

图2.2.4 插入操作的流程图

2.2.5 CreatBST (建立)

功能:建立一个已知数据的二叉排序树。

图2.2.5 建立操作的流程图

2.2.6 DeleteBST (删除)

功能:删除值为x 的结点。

Y

Y

开始

T==NULL T=s

s->data>T->data

s=InserBST(T->r

child)

s=InsertBST(T->l

child)

N

N

结束

开始

输入结点数n

调用插入函数

结束

开始

调用查找函数

删除p结点

右子树连在左

子树上

左子树连在p

结点的父母节

点上

结束

图2.2.6 删除操作的流程图2.2.7 PreOrder(先序遍历)

功能:对二叉排序树进行先序遍历,并输出序列。

开始

访问T

PreOrder(T->rchild)

PreOrder(T->lchild)

结束

图2.2.7 先序遍历的流程图2.2.8 InOrder(中序遍历)

功能:对二叉排序树进行先序遍历,并输出序列。

开始

InOrder(T->rchild)

访问T

InOrder(T->lchild)

结束

图2.2.8 中序遍历的流程图

沈阳航空航天大学课程设计报告错误!未指定书签。

3 数据结构分析

3.1 存储结构

定义一个链表式的二叉排序树,用链表的方式构造结点,存储二叉排序树中的结点、结点类型和指针类型如下:

typedef struct BiTNode

{

int data;

struct BiTNode *lchild,*rchild;

}BiTNode,*BiTree;

3.2 算法描述

1、二叉排序树的查找算法

(1)若二叉排序树为空,则查找失败。

(2)否则,将根结点的关键字与待查关键字进行比较,若相等,则查找成功;若根节点关键字大于待查值,则进入左子树重复次步骤,否则,进入右子树进行此步骤;若在查找过程中遇到二叉排序树的叶子节点时,还没有找到待查节点,则查找不成功。

算法如下:

BiTree SearchBST1(BiTree T, int key)

{//在根指针T所指二叉排序树中递归查找关键字等于 key 的数据元素

//若成功,返回指向该数据元素结点的指针,否则返回空指针;s为返回 //指针

BiTree s;

if(T==NULL) return NULL;

else if(T->data==key) s=T;

else if(T->data>key) //key大于当前结点的关键字,则查找左子树

相关文档
最新文档