高级数据结构
文章平均质量分 61
savior_xzh
听君一席话,如听一席话
展开
-
[高级数据结构] 3. 红黑树(上)
二、学习诀窍1、理解红黑树的插入调整,要站在祖父节点向下进行调整2、理解红黑叔的删除调整,要站在父节点向下调整3、插入调整,主要就是为了解决双红情况4、新插入的节点一定是红色,插入黑色节点一定会产生冲突,违反条件5,插入红色节点,不一定产生冲突5、把每一种情况,想象成一棵大的红黑树中的局部子树6、局部调整的时候,为了不影响全局,调整前后的路径上黑色节点数量相同三、插入策略1、叔叔节点为红色的时候,修改三元组小帽子,改成红黑黑2、叔叔节点为黑色的时候,参考AVL树的失衡情况,分成LL,LR,原创 2021-12-02 17:41:21 · 79 阅读 · 0 评论 -
[高级数据结构] 3. 红黑树
删除调整删除红色节点,不影响平衡删除黑色节点分情况:度为0,特殊思维度为1,孩子节点一定是红色,没有另一边(路径黑色数量相同)度为2可以转换为上面两种插入调整为了干掉双红,度为0删除调整为了干掉双重黑NIL’红黑树本质上是平衡二叉树牢记:保证局部黑色节点数量不变RR情况:兄弟是右子树,右孩子节点是红色为了干掉双黑,大左旋,导致不平衡51->原根38颜色38和72->黑原因:48颜色不确定,防止它是红色,把38染黑,RL右兄弟的右孩子一定是黑色...原创 2021-12-02 17:40:57 · 116 阅读 · 0 评论 -
[胡] 1. 从递推到动态规划(上)
从递推到动规(上)递推问题的求解套路确定递推状态,一个数学符号+一个数学符号的语义解释确定递推状态,推导递推状态符号的自我表示方法程序实现,(递归+记忆化 / 循环实现)确定递推状态注意:这是学习递推问题的重中之重。学习确定递推状态的技巧。f(x) = y;y:问题种的求解量,也是所谓的因变量x:问题中直接影响求解量的部分,也是我们所谓的自变量本质:就是寻找问题种的自变量与因变量确定递推公式本质:分析状态种的容斥关系f(n) = f(n - 1) + f(n - 2原创 2021-09-18 01:41:26 · 116 阅读 · 0 评论 -
[高级数据结构] 哈夫曼编码
huffman代码Huffman是平均查找长度最优的变长编码#include <stdio.h>#include <stdlib.h>#define swap(a, b) {\ __typeof(a) __c = a;\ a = b, b = __c;\}typedef struct Node { char ch; // 字符 double p; // 概率 struct Node *lchild, *rchild;} N原创 2021-08-06 01:11:39 · 129 阅读 · 0 评论 -
[高级数据结构] 6. ac自动机
ac自动机所有点的失败指针一定在它的上层很像广搜原创 2021-07-25 23:22:17 · 95 阅读 · 1 评论 -
[高级数据结构] 5. 字符串匹配
暴力匹配 算法 brute_force字符串匹配问题:单模匹配问题,顾名思义只有一个模式串依次对齐模式串和文本串的每一位,直到匹配成功关键:不重不漏的找到答案int brute_force(const char *s, const char *t) { for (int i = 0; s[i]; i++) { int flag = 1; for (int j = 0; t[j]; j++) { //if (s[i + j] - t[原创 2021-07-25 10:50:41 · 164 阅读 · 0 评论 -
[高级数据结构] 4. 习题课
马拉车算法解决回文串问题处理回文串的四种算法暴力匹配2种情况:1种是以某个字符为对称中心,1种是以间隙(2个字母之间)为对称中心int b[100];int d[100]; // i + 1for (int i = 0; i < size(str); i++) { b[i] = 1; // i为中心的回文长度是它本身字符 while (i - b[i] >= 0 && i + b[i] < n && str[i - b[i]]原创 2021-07-24 21:24:10 · 120 阅读 · 1 评论 -
[高级数据结构] 3. 字典树
trie 字典树时间复杂度分析 n是字符串个数 m字符串长度构建操作时间复杂度 o(n * m)查找操作时间复杂度 o(m)优点查找高效,并且利用公共前缀来节约空间缺点空间复杂度过高思考:如何解决空间复杂度过高的问题?使用场景:自动补全功能字典树代码#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#define base 26t原创 2021-07-21 17:26:35 · 219 阅读 · 0 评论 -
[高级数据结构] 4. 红黑树(下)
一、删除调整发生的前提删除红色节点,不会对红黑树的平衡产生影响度为1的黑色节点,唯一子孩子,一定是红色删除度为1的黑色节点,不会产生删除调整删除度为0的黑色节点,会产生一个双重黑的NIL节点删除调整,就是为了干掉双重黑二、删除调整双重黑节点的兄弟节点是黑色,兄弟节点下面的两个子节点也是黑色,父节点增加一重黑色,双重黑与兄弟节点,分别减少一重黑色。兄弟节点是黑色,并且,兄弟节点种有红色节点R(兄弟)R(右子节点),左旋,新根改成原根的颜色,将新根的两个子节点,改成黑色R(兄弟)L(原创 2021-07-16 22:02:44 · 122 阅读 · 0 评论 -
[高级数据结构] 2. AVL树
退化成链表,查找效率降低,变成o(n)o(n)o(n)不同的的插入顺序,导致查找效率不同AVL树平衡二叉排序树解决二叉排序树查找性能退化的问题小学生必知必会神经网络—60年前的数据结构原创 2021-07-01 00:52:49 · 218 阅读 · 0 评论 -
[高级数据结构] 1.二叉排序树
二叉排序树原创 2021-05-16 17:14:42 · 367 阅读 · 0 评论