
数据结构
Susceptible0506
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
并查集
1.并查集基础并查集是一种很不一样的树形结构,用来解决一类连接问题连接问题问图上的两点是否相连连接问题的应用1 .网络中节点的连接状态 网络是一个抽象的概念:用户之间形成的网络2.数学中集合类的实现:合并两个集合、判断是否属于同一个集合等连接问题和路径问题的区别在于,连接问题只需要回答两个点是否连接,而路径问题需要将两个点连接的路径输出。所以连接问题比路径问题要回答的问题少并查集这个数据结构需要实现:对于一组数据,主要支持:union(p,q)将元素...原创 2020-05-21 19:05:38 · 814 阅读 · 0 评论 -
二分搜索树6 删除元素
查找二叉搜索树的最大值和最小值最小值就是一直找左孩子,直到找到一个节点没有左孩子,那个节点就是最小值;最大值就是一直找右孩子,直到找到一个节点没有右孩子,那个节点就是最大值;删除最小值如果最小值没有左右孩子,直接删除就可以复杂的在于,这棵树的最小值有右孩子操作:将要删除的节点的右孩子代替这个节点删除最大值如果最大值没有左右孩子,直接删除就可以复杂的在...原创 2020-04-22 23:24:26 · 200 阅读 · 0 评论 -
二分搜索树5 广度优先遍历(层序遍历)
思想:引入队列的概念将28入队,队列不为空,将队首28元素取出,输出,将其左右两个节点入队:16 30将队首16元素取出,输出,将其左右两个节点入队:30 13 22将队首30元素取出,输出,将其左右两个节点入队:13 22 29 42循环这样的操作,直到队列为空结果:28 16 30 13 22 29 42实现//定义一棵二分搜索树 class BST{...原创 2020-04-22 23:14:35 · 336 阅读 · 1 评论 -
二分搜索树4 深度优先遍历
对于二分搜索树来说,中序遍历输出的顺序是从小到大的特点:遍历完左右节点后才遍历自身,可以应用到释放二叉搜索树的内存上实现//定义一棵二分搜索树 class BST{private: //树的一个节点定义 struct Node{ Key key; Value value; Node* left;//左孩子 Node* right;//右孩...原创 2020-04-22 23:11:58 · 168 阅读 · 0 评论 -
二分搜索树3 查找元素
思想比较要查找的元素和当前节点的大小,如果比当前节点大,则去当前节点的右子树查找,否则去左子树查找例如:42先和41比,比41大,所以在41的右子树中继续查找4242比58小,在58的左子树继续查找42比50小,在50的左子树继续查找查找失败:元素不存在59比41大,在41的右子树继续查找59比58大,在58的右子树继续查找59比60小,在60的左子树继续查找,...原创 2020-04-22 23:08:00 · 154 阅读 · 0 评论 -
二分搜索树2 插入元素
插入元素过程1.插入节点不存在比较插入的元素和当前节点的大小,如果比当前节点大,则比较元素和节点的右孩子,否则比较左孩子。循环,直到找到一个节点为空,将值插入进去例:60和根元素做比较,60比41大,所以肯定要插入到右侧60跟58做比较,比58大,说明要插入到58的右侧,58没有右孩子,所以60插入进去2.如果插入的元素在树中已经存在了,则是找到那个节点,更改对应的va...原创 2020-04-22 23:02:32 · 274 阅读 · 0 评论 -
二分搜索树1 基础
定义性质:对于每一个节点而言,它的值大于左子树所有的值,小于右子树所有的值左子树和右子树也是一棵二分搜索树注意:二分搜索树不一定是完全二叉树应用二分搜索树的主要应用不同实现方式的时间复杂度基础实现#include <iostream>using namespace std;template <typename Key,typ...原创 2020-04-22 22:54:20 · 130 阅读 · 0 评论