数据结构
个人总结
A鱼翔浅底A
每天进步一点点...
QQ:1106533113
展开
-
数据结构简介:树----------------KD-Tree
数据结构简介数据结构简介KD-Tree定义KD-Tree,其实是K-Dimension Tree的缩写,是对数据点在k维空间中划分的一种数据结构.其实,KD-Tree 是一种平衡二叉树.KD-Tree 示意图KD-Tree作用1)多键值搜索:例如范围搜寻、最邻近搜索KD-Tree时间复杂度1)构建:O(log(^2)n)2)插入:平均O(logN)3)删除:平均O(logN)4)精确查询:平均O(logN)5)范围查询(理想平衡树最坏): O(k*N^(1-1/k)+m):k为原创 2020-06-11 10:42:43 · 312 阅读 · 0 评论 -
数据结构简介:树----------------后缀树和后缀数组
数据结构简介数据结构简介后缀树和后缀数组定义1)后缀是指从某个位置i开始到整个串末尾结束的一个特殊子串,比如说字符串abcd,bc就是他的其中一个子串,bcd就是他的其中一个后缀.2)后缀数组就是某个字符串T的所有后缀组成的一个数组3)后缀树就是包含字符串T所有后缀的压缩trie树(简单的来说)后缀数组示意图后缀树示意图后缀数组的作用1)查找模式P是否存在在文本中:O(PlogT)2)找出模式P出现的次数:O(P+logT)后缀树的作用1)找出T中最长重复子串:O(T)2原创 2020-06-05 16:46:48 · 302 阅读 · 0 评论 -
数据结构简介:树--------树堆(Treap)
数据结构简介数据结构简介树堆(Treap)定义树堆(Treap)是二叉排序树(Binary Sort Tree)与堆(Heap)结合产生的一种拥有堆性质的二叉排序树.时间复杂度期望时间复杂度O(logN)特点1)树堆和二叉堆不一样,二叉堆是完全二叉树,且满足堆序性质,但是树堆不一定是完全二叉树.树堆对结构性没有要求2)树堆满足堆序要求树堆示例图树堆旋转下图中,当X节点优先级小于Y节点时右旋和Y节点优先级小于X节点的左旋,其左右旋转如下图:树堆示例代码...原创 2020-06-03 17:36:42 · 246 阅读 · 0 评论 -
数据结构简介:堆---------二叉堆
数据结构简介数据结构简介二叉堆1. 定义二叉堆是完全二叉树或者是近似完全二叉树.2. 时间复杂度平均O(logN)3. 二叉堆特性结构特性:是一颗完全二叉树堆序特性:父节点大于或等于其各子节点(最大堆);父节点小于或等于其各子节点(最小堆)4. 堆常用操作建堆:将N项插入堆中:执行N次插入操作,采用上浮策略将N项任意放入一颗空树中:放入完成后,从最后一个非叶子节点开始执行下浮操作插入:在尾部插入,采用上浮策略删除最值:删除根节点,将最后一个节点放到根节原创 2020-05-15 18:08:17 · 172 阅读 · 0 评论 -
数据结构简介:堆
数据结构简介数据结构简介堆的分类1. 二叉堆(堆)定义二叉堆是完全二叉树或者是近似完全二叉树.时间复杂度平均O(logN)二叉堆特性结构特性:是一颗完全二叉树堆序特性:父节点大于或等于其各子节点(最大堆);父节点小于或等于其各子节点(最小堆)堆常用操作建堆:(1)将N项插入堆中:执行N次插入操作(2)将N项任意放入一颗空树中:放入完成后,从最后一个非叶子节点开始执行下浮操作插入:在尾部插入,采用上浮策略删除最值:删除根节点,将最后一个节点放到根节点位置,采用下浮原创 2020-05-14 18:44:08 · 236 阅读 · 0 评论 -
数据结构简介:树----------B树
数据结构简介数据结构简介B树1. 定义类似二叉搜索树且带有一系列限制使其平衡的M阶树,树的高度比AVL其他树小,多用于数据存储2. B树特征阶为M的B树(B-tree)是一棵具有下列特性的M叉树:数据项存储在树叶上非叶节点存储直到M-1个关键字以指示搜索的方向:关键字i代表子树i+1中的最小的关键字树的根或者是一片树叶,或者其儿子数在2和M之间除根外,所有非叶节点的儿子数在[M/2]和M之间。所有的树叶都在相同的深度上,并且每片树叶拥有的数据项其个数在[L/2]和L之间下图为5阶原创 2020-05-12 17:22:32 · 267 阅读 · 1 评论 -
数据结构简介:树------------伸展树
数据结构简介数据结构简介伸展树1. 定义在二叉搜索树基础上允许树有任意的深度,但是在每次操作之后要使用一个调整规则进行调整,使得后面的操作效率要高,属于自调整类数据结构.2. 时间复杂度任意连续M次操作在最坏的情形下花费时间O(MlogN),所以每次操作的摊还代价是O(logN)3. 展开方法之字形:执行AVL那样双旋转一字型:类似AVL的单旋转4. 举例对下图k1执行find1)第一步:之字形双旋转2)第二步:一字形旋转具体数字5. 示例代码...原创 2020-05-12 17:03:41 · 120 阅读 · 0 评论 -
数据结构简介:树-------AVL树
数据结构简介数据结构简介AVL树1. 定义带有平衡条件的二叉搜索树2. 时间复杂度O(logN)3. 平衡方式必须平衡的节点称为a,a的两颗子树的高度差为21) 单旋转对a的左儿子的左子树进行一次插入对a的右儿子的右子树进行一次插入2) 双旋转对a的左儿子的右子树进行一次插入对a的右儿子的左子树进行一次插入4. 单旋转、双旋转举例将1~16插入空AVL树插入1~3:单旋转插入4~5:单旋转插入6:单旋转插入7:单旋转插入10~16原创 2020-05-12 16:37:50 · 151 阅读 · 0 评论 -
数据结构简介:树------二叉搜索树
数据结构简介数据结构简介树------二叉搜索树1. 定义左子树值比父亲值小,右子树值比父亲值大2. 时间复杂度在没有删除或者惰性删除的情况下,所有操作的时间复杂度平均为O(logN)3. 相关操作1) 是否含有某节点(contains)2) findMin和findMax执行findMin,从根开始并且只要有左儿子就向左査找,终止点就是最小的元素.findMax例程除分支朝向右儿子外其余过程相同.3) insert实现插入的例程在概念上是简单的.为了将X插入到树T中,可以像原创 2020-05-12 15:54:09 · 158 阅读 · 0 评论 -
数据结构简介:树
数据结构简介数据结构简介树树的遍历1. 树的深度优先遍历算法思想递归思想算法特点每个节点会访问三次示例代码树的深度优先遍历2. 树的广度优先遍历算法思想广度优先思想算法特点借助队列方式每个节点被访问一次示例代码树的广度优先遍历树的常见习题1. 二叉搜索树的第K大节点算法思想递归思想递归左节点回溯的时候判断是否是第K大节点二叉搜索树深度优先遍历,如果是中序遍历,则输出的序列是升序序列算法特点每个节点会访问三次递归左节点回溯的时原创 2020-05-10 17:07:13 · 123 阅读 · 0 评论 -
数据结构简介:栈
数据结构简介数据结构简介栈1. 栈模型栈是后进先出的数据模型2. 栈的实现可以用数组和链表模拟实现3. 栈的应用平衡符号可以用来检查语法是否有错误中缀表达式转后缀表达式(逆波兰记法)例如中缀表达式a + b * c + (d * e + f) * g 转换成后缀表达式: a b c * + d e * f + g * +用后缀表达式计算结果(后缀表达式其实是中缀表达式的一个表现形式)例如后缀表达式:6 5 2 3 + 8 * + 3 + * ,其结果为:288函数调用原创 2020-05-10 17:02:47 · 166 阅读 · 0 评论 -
数据结构简介:哈希表
#用hash table简单实现hash map原创 2020-02-06 16:45:21 · 373 阅读 · 0 评论