摘要:
(一)前提 对于上面的案例:我们选用中序遍历获取结果 (二)定义 (三)二叉树线索化实现 1.创建二叉树 2.线索化二叉树 3.思考pre指针 (四)根据线索化的二叉树进行非递归遍历(遍历双向链表) (五)全部代码 阅读全文
摘要:
(一)顺序结构创建二叉树 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <math.h> #define OK 1 #define ERROR 0 #define TRUE 1 #def 阅读全文
摘要:
(一)定义 (二)特殊的二叉树 1.斜二叉树 或者 2.满二叉树(完美二叉树) 3.完全二叉树 (三)二叉树的几个重要性质 性质一:第i层最大结点数位2^(i-1)个,(i>=1) 性质二:深度为k的二叉树至多有2^k-1个结点 性质三:叶结点n0与度为2的结点n2的个数关系n0=n2+1 性质四: 阅读全文
摘要:
前提 补充 (一)双亲表示法 1.结点结构 2.结点结构定义 3.优缺点分析 4.改进一:方便获取孩子结点 缺点:这样消耗了大量的空间,是不必要的, 我们尽可能使用较小的空间,所以我们一般只添加一个长子域,可以获取到有0个或1个孩子结点,甚至两个子树都可以获取,但是对于较多的孩子我们若是非得使用顺序 阅读全文
摘要:
(一)树定义 (二)结点分类 首先介绍一下:度 叶结点/终端结点/叶子结点 非终端结点/分支结点 内部结点 (三)结点之间的关系 (四)树的其他概念 (五)有序树和无序树 (六)森林 (七)和线性表的比较 线性表 树 (八)总结树的抽象数据类型 阅读全文
摘要:
KMP算法实现 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define 阅读全文
摘要:
(一)获取模式串T的next数组值 1.回顾 我们所知道的KMP算法next数组的作用 而KMP算法的next求值函数 2.思考 3.下面我们尝试获取下面的T串的所有next值,从中找到关联 步骤一:由上一篇博文可以知道前j1,j2前两个的next是固定值为0,1 步骤二:获取j=3时的next,此 阅读全文
摘要:
(一)定义 (二)KMP算法了解 1.思路启发一(避免了所有的回溯): 什么是不必要的回溯(记住重点是模式串): 下一次的匹配(从i5开始): 2.思路启发二(不必要的回溯不代表不会回溯,若是需要回溯,那么一定是不可避免的回溯) 3.思路启发三(不必要的匹配) 4.思路启发四(综合思路一和思路二和思 阅读全文