概要: 1、Dijkstra算法用于解决单源最短路径问题,严格讲是无负权图的最短路径问题。 邻接矩阵版 邻接表版 若要求输出最短路径,以邻接矩阵为例: 另外还有一种情况,如果某个结点存在多个前驱结点,那上面这种pre数组的方法就不再适用,改成vector即可: 当访问的结点是路径起点st时(边界), ...
分类:
编程语言 时间:
2019-02-22 23:30:32
阅读次数:
207
线索二叉树,或者说,对二叉树线索化,实质上就是遍历一棵二叉树,在遍历的过程中,检查当前结点的左、右指针域是否为空。如果为空,将它们改为指向前驱结点或后继结点的线索。
分类:
其他好文 时间:
2019-02-21 09:49:38
阅读次数:
161
2 线性表 线性结构,线性结构的特点:(1)是数据元素的非空有限集合;(2)存在唯一的一个被称做“第一个”的数据元素;(3)存在唯一的一个被称做“最后一个”的数据元素;(4)除第一个以外,集合中的每个数据元素均有一个前驱;(5)除最后一个以外,集合中的每个数据元素均有一个后继; 2.1 线性表的类型 ...
分类:
其他好文 时间:
2019-02-18 23:28:19
阅读次数:
364
线性表的基本定义: 一个线性表是n个数据元素的有限序列,在一个非空的线性表中,(1)存在唯一的一个被称为“第一个”的数据元素;(2)存在惟一的一个被称为“最后一个”的数据元素; (3)除第一个之外,其他的每一个数据元素均只有一个前驱;(4)除最后一个之外,其他的每一个数据元素均只有一个后继。 线性表 ...
分类:
其他好文 时间:
2019-02-17 16:39:23
阅读次数:
191
第一次写树套树,在一定帮助下学习,调码3h。 用线段树套平衡树, 对于区间内排名的查询可以解决了;//$O(log^2n)$ 对于查询区间排名为k的数,二分答案再判断;//$O(log^3n)$ 修改数值直接修改;// $O(log^2n)$ 前驱后继,线段树递归区间时,查询每个完全包括的区间数v的 ...
分类:
其他好文 时间:
2019-02-17 10:48:54
阅读次数:
308
同【普通平衡树】 替罪羊树单次操作的均摊复杂度为 $O(logn)$。 由于替罪羊树的删除方式为懒惰删除,因此在查询第 K 大和查排名时必须考虑子树实际的大小。 由于懒惰删除的效果,Treap 式的前驱后继查询方式对替罪羊树并不适用,需要换成查排名或求第 K 大的方式处理。 代码如下 cpp inc ...
分类:
其他好文 时间:
2019-02-16 15:09:17
阅读次数:
176
题意 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1. 查询k在区间内的排名 2. 查询区间内排名为k的值 3. 修改某一位值上的数值 4. 查询k在区间内的前驱(前驱定义为严格小于x,且最大的数,若不存在输出 2147483647) 5. 查询k在区间内的后 ...
分类:
其他好文 时间:
2019-02-13 21:17:55
阅读次数:
155
"题目蓝链" Description 您需要写一种数据结构,来维护一个有序数列,其中需要提供以下操作: 1. 查询$k$在区间内的排名 2. 查询区间内排名为$k$的值 3. 修改某一位值上的数值 4. 查询$k$在区间内的前驱( 前驱定义为严格小于x,且最大的数,若不存在输出 2147483647 ...
分类:
其他好文 时间:
2019-02-06 17:19:31
阅读次数:
171
import java.util.Hashtable; //https://zhuanlan.zhihu.com/p/34133067 class DLinkedList { String key; //键 int value; //值 DLinkedList pre; //双向链表前驱 DLink... ...
分类:
编程语言 时间:
2019-01-31 01:31:35
阅读次数:
176
关于树真的是非常的不好理解,看了很多其他人的博客,修修改改,拼拼凑凑。 为什么要将二叉树线索化?因为它有很多的空指针(n+1个),而每次我们在遍历二叉树的时候想找一个节点的前驱和后继都得把二叉树完全遍历一遍 可是如果有了一个标志,一个关于指向其前驱或者是后继的线索,那么就会高效很多。 typedef ...
分类:
其他好文 时间:
2019-01-28 22:22:00
阅读次数:
176