
数据结构
一颗海星
稳稳当当扎扎实实
展开
-
并查集 和 路径压缩
并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其特点是看似并不复杂,但数据量极大并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。常常在使用中以森林来表示。 并查集通常包含两个常用的函数 : find() 和 join() ,find()函数是用来查看某个体祖先...原创 2018-08-04 11:01:07 · 1944 阅读 · 0 评论 -
搜索二叉树
今天学到了搜索二叉树赶紧来巩固一下。 简单介绍一下数据结构中的树 ,在《离散数学》中树的定义是:连通无回路的图 。 树(tree)是包含n个结点的有穷集,其中 每个元素称为节点,树中边的条数 为 n - 1。 相关术语: 节点的度:一个节点含有的子树的个数称为该节点的度; 叶节点或终端节点:度为0的节点称为叶节点; ...原创 2018-07-31 20:58:05 · 3142 阅读 · 0 评论 -
单调队列
单调队列是通过维护队列严格单调来解决问题,先看一个问题(北大OJ 2823): 分析一下问题:这是一个滑动窗口问题,题意是(英语菜鸡的翻译): 给你一个大小为 n (n<=10^6)的数组,有一个大小为k的滑动窗口从最左边移动到最右边,你只能看到窗口里的k个数字,每次滑动窗口移动一个位置,下面是一个例子(如上图)其中数组是[1 3 -1 -3 5 3 6 7],k 是 3你的任务...原创 2018-08-01 21:33:00 · 176 阅读 · 0 评论 -
堆-二叉堆
我们这里说的堆并不是内存中的堆,我们所说的是数据结构-堆,堆 也叫优先队列是一种特殊的完全二叉树,看下图这棵完全二叉树有什么特点? 他的每个父节点的值都不小于其子节点的值。这称为一个最大堆,最小堆就是父节点的值均不大于字节点的值的完全二叉树。 二叉堆有两点性质: ①结构性:堆具有完全树的结构 ②有序性:堆的父节点值一定不小大于(小于)其子节点的值 那...原创 2018-08-06 22:44:19 · 860 阅读 · 0 评论 -
图的储存--邻接表
我学过的图的存储方式有两种,一种是用邻接矩阵存储,邻接矩阵的优点是可以快速判断两个顶点之间是否存在边,可以快速添加边或者删除边。但是他也有很明显的不足,那就是邻接矩阵的大小只能根据点来定义,若一个图的点较多但是边很少,如果用邻接矩阵来储存会浪费很大多的空间资源,这时我们的邻接表登场了!!!邻接表就是根据边来定义大小的。 介绍一下邻接表,邻接表可以用结构体 + 指针实现 ...原创 2018-08-07 23:03:30 · 4011 阅读 · 0 评论