# 基于C语言实现的二叉排序树
# 一、使用说明
## 1.1 操作手册
- 运行程序后,进入欢迎界面
- 选择相应操作
![](http://www.writebug.com/myres/static/uploads/2021/10/19/9f8c4bc7ae511ace97b882d3f533e9fc.writebug)
### 1.1.1 建立二叉排序树
输入1和数据来建立二叉排序树,例如:
![](http://www.writebug.com/myres/static/uploads/2021/10/19/9eb9a7f417dabfcaa0afa4c88090f534.writebug)
输入信息后直接给出生成的二叉排序树,如果有重复数据,会给出相应提示。
### 1.1.2 插入元素
输入2以插入一个全新的节点,例如:
![](http://www.writebug.com/myres/static/uploads/2021/10/19/303dd49a010a366f2deab04c378f53eb.writebug)
插入数据之后会直接给出插入后的二叉排序。
### 1.1.3 查询元素
输入3以查询元素,例如:
![](http://www.writebug.com/myres/static/uploads/2021/10/19/a9e4245cd3a74d4c47c7c59cd047b06f.writebug)
查找给出的数值,查找完毕经给出相应数值是否在二叉排序树中。
# 二、概述
## 2.1 程序设计目的
本题要求实现一个二叉排序树。二叉排序树是一个所有的左节点都比根节点小,右节点都比根节点大,易于查找的数据结构。本题要求我们熟悉二叉排序树的生成和节点的插入。
## 2.2 算法思路
只是说二叉排序树的话算法非常简单,如果是ALV树的话就很复杂了。二叉排序树节点的插入只需要从根节点开始,不断地判定插入值和节点值的大小,小则进入左子树,大则进入右子树,在这过程中,如果不存在子树了,就插入在该处即可,查找的算法也是一样的。
## 2.3 数据结构
本题的数据结构为二叉树,用结构体来保存节点。
# 三、函数接口
## 3.1 node结构体
| 成员 | 功能 |
| ----------------- | -------- |
| Int data | 存放保存的数据 |
| Node * leftChild | 指向左子树的指针 |
| Node * rightChild | 指向右子树的指针 |
## 3.2 Tree接口
| 成员函数名 | 功能 | 参数 | 返回值类型 |
| ------------------------------------ | ----------------- | ---------------------------------------- | ------------ |
| Tree() | 默认构造函数,使根节点指向NULL | | |
| ~Tree() | 析构函数,清空所有数据 | | |
| void one_BuidTree() | 生成二叉排序树 | | |
| void two_Insert() | 插入节点 | | |
| void three_Find() | 查找结点 | | |
| void destroy(Node * p) | 摧毁节点 | 要摧毁的节点:Node * p | |
| void build(Node * p, Node * current) | 生成辅助函数 | 要插入的节点:Node * p 当前的根节点:Node * current | |
| void Print(Node * node) | 打印 | 需要打印的节点:Node * node | |
| void search(int number, Node * node) | 查找辅助函数 | 需要查找的数值:int number 当前根节点:Node * node | |
| Node * create() | 生成一个空的节点 | | 一个已经分配好空间的节点 |
# 四、体会
这道题让我见识到了一个强而有力的查找数据结构二叉排序树。并操练了二叉排序树的插入和查找。对于排序的算法还有很多更优的方案,但二叉排序树是必须学习的一个数据结构,相信学会这个数据结构对我可以有很大的帮助。
精选_基于C语言实现的二叉排序树_源码打包
版权申诉
150 浏览量
2022-03-08
11:24:55
上传
评论
收藏 151KB ZIP 举报
工具盒子
- 粉丝: 58
- 资源: 1313
最新资源
- 单相桥式全控整流MATALB Simulink仿真文件
- Dolby Vision安装包(解决杜比视界版本高清片源颜色不正问题)
- Python实现的简单二叉堆(最小堆)示例
- 嵌入式基础学习资料0000
- content_1714465331721.xls
- HM3401-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- Chainbase+Web3+APi+Data warehouse
- HM3401D-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- GEE案例-1990-2023年计算某个区域的NDVI时序变化轨迹(以徐州市为例)含全部代码.pdf
- HM3401C-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈