基本数据结构
文章平均质量分 78
ljlstart
这个作者很懒,什么都没留下…
展开
-
线段树的基本操作
线段树:线段树是一种平衡二叉查找树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。主要的处理思想是基于分治的思想。它的逻辑结构如下:设根节点的区间为[a,b),区间长度为L = b - a,线段树的性质:(1)线段树是一个平衡树,树的高度为log(L)(2)线段树把区间上的任意长度为L的线段都分成不超过2log(L)线段的并线段树转载 2015-09-26 21:20:38 · 424 阅读 · 0 评论 -
AVL树详解
AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个儿子子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 对二叉树的平衡调整过程,主要包含四种旋转操作:LL,LR,RR,RL 。 LR由当前节点左儿子的一次RR旋转和当前节点的一次LL旋转转载 2016-04-28 15:43:25 · 626 阅读 · 0 评论 -
B树和B+树
原文章地址:http://blog.csdn.net/v_JULY_v/article/details/6530142/作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。出处:http:转载 2016-04-30 11:07:13 · 857 阅读 · 0 评论 -
图的存储结构
邻接表(无向图) 邻接矩阵看上去是个不错的选择,首先是容易理解,第二是索引和编排都很舒服~但是我们也发现,对于边数相对顶点较少的图,这种结构无疑是存在对存储空间的极大浪费。邻接表(有向图) 因此我们可以考虑另外一种存储结构方式,例如把数组与链表结合一起来存储,这种方式在图结构也适用,我们称为邻接表(AdjacencyList)。转载 2016-05-14 11:28:41 · 913 阅读 · 0 评论 -
并查集
以下是两种实现: // Model One const int MAXSIZE = 500010; int rank[MAXSIZE]; // 节点高度的上界 int parent[MAXSIZE]; // 根节点 int FindSet(int x){ // 查找+递归的路径压缩原创 2016-05-09 01:06:40 · 759 阅读 · 0 评论 -
哈希表和红黑树的对比
什么是Hash Hash,也可以称为“散列”,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出(也就是多对一的关系)。哈希表的构造 在所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找。而哈希表就是利用数原创 2016-05-07 00:53:15 · 18205 阅读 · 5 评论