数据结构
文章平均质量分 83
炫辰0927
这个作者很懒,什么都没留下…
展开
-
二叉搜索树
参考:https://blog.csdn.net/yanxiaolx/article/details/51986428二叉搜索树,也称有序二叉树,排序二叉树,是指一棵空树或者具有下列性质的二叉树:1. 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;2. 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;3. 任意节点的左、右子树也分别为二叉查找树。4. 没有...转载 2018-03-29 20:52:02 · 116 阅读 · 0 评论 -
树的总结
(一)二叉树 相关复杂度:高度为k的二叉树最多有2^k-1,因此如果二叉排序树是平衡的,则n个节点的二叉排序树的高度为log2n+1,其查找效率为O(log2n),近似于折半查找。如果二叉排序树完全不平衡,则其深度可达到n,查找效率为O(n),退化为顺序查找。一般的,二叉排序树的查找性能在O(Log2n)到O(n)之间。(对于二叉排序树,高度决定了查找效率) 1.二叉查找树(BST树)(1)若左...原创 2018-03-30 10:56:53 · 258 阅读 · 0 评论 -
哈希表总结(一致性哈希)
哈希表是一种通过哈希函数将特定的键映射到特定值的一种数据结构,他维护着键和值之间一一对应关系。散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后...原创 2018-03-31 17:08:00 · 500 阅读 · 0 评论 -
数组,链表和哈希表比较
数组与链表的区别:(1)存储空间上: 链表存放的内存空间可以是连续的,也可以是不连续的,数组则是连续的一段内存空间。一般情况下存放相同多的数据时,数组占用较小的内存,而链表还需要存放其前驱和后继的空间。(2)长度的可变性: 链表的长度是按实际需要可以伸缩的,而数组的长度是在定义时要给定的,如果存放的数据个数超过了数组的初始大小,则会出现溢出现象。(3)查找效率:按序号查找时,数组可以随...转载 2018-03-31 19:11:06 · 5762 阅读 · 1 评论 -
字典树问题与AC自动机
Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。字典树的核心就是空间换时间,空间消耗大,但是插入和查询有着很优秀的时间复杂度,利用字符串的公共前缀来避免无谓的字符串比较,降低查询时间。 Trie树的平均高度h为单词平均长度len,所以Trie树的查询复杂度为O(h)=O(len)字典树节点: ...转载 2018-04-10 18:50:51 · 753 阅读 · 0 评论 -
二叉树的遍历
//也可以参考该文章:https://blog.csdn.net/guojz049/article/details/51597834定义二叉树结构体typedef struct BinaryTreeNode { TelemType data; struct BinaryTreeNode *Left; struct BinaryTreeNode *R...转载 2018-03-28 20:59:39 · 196 阅读 · 0 评论 -
大小堆以及TOP K问题
完全二叉树如上图所示,我们可以将完全二叉树的结点按照层序遍历的顺序储存在一个数组中,那么当完全二叉树中的某个结点位于array的i处时,其左子节点必位于2i+1处(i>=0),其右结点必位于array的2i+2处。这样我们就可以轻易的实现完全二叉树的存储。一般调整大小堆,从第一个非叶子节点位置开始,在数组中位size/2-1处,如上所示就是E。若将结点v的编号(秩)记作i(v...原创 2018-04-11 19:40:12 · 905 阅读 · 1 评论 -
图的问题
1.图的存储结构邻接矩阵 使用二维数组来存储图的边的信息和权重,如下图所示的4个顶点的无向图: 从上面可以看出,无向图的边数组是一个对称矩阵。所谓对称矩阵就是n阶矩阵的元满足aij = aji。即从矩阵的左上角到右下角的主对角线为轴,右上角的元和左下角相对应的元全都是相等的。 如果换成有向图,则如图所示的五个顶点的有向图的邻...转载 2018-04-21 16:48:15 · 620 阅读 · 0 评论 -
循环队列实现
假设是长度为5的数组,初始状态,空队列如所示,front与 rear指针均指向下标为0的位置。然后入队a1、a2、a3、a4, front指针依然指向下标为0位置,而rear指针指向下标为4的位置。 出队a1、a2,则front指针指向下标为2的位置,rear不变,如下图所示,再入队a5,此时front指针不变,rear指针移动到数组之外 ,造成假溢出的现象。...转载 2018-08-10 14:34:56 · 12112 阅读 · 3 评论