随笔分类 - 数据结构与算法
摘要:KMP算法最关键的一步在于寻找最长公共前缀后缀长度 而回溯的长度 = 已匹配字符数 - 失配字符前一个字符的最长公共前缀后缀长度 寻找前缀后缀最长公共元素长度: 如果给定的模式串为“abab”,那么它的各个子串的前缀后缀的公共元素的最大长度数组a为0 0 1 2: 相应的回溯数组next为a向右平移
阅读全文
摘要:为什么要在二叉搜索树的基础上提出平衡二叉树? 考虑这样一种情况: 当我们的二叉搜索树结构如图所示时, 这棵树与单链表的查找,删除时间复杂度相比相差无几,甚至高于单链表(二叉搜索树还需要判断左子树) 为了避免上述不平衡的存储结构出现 以及保证较高的查询效率,提出了平衡二叉树 平衡二叉树定义:任意节点的
阅读全文
摘要:为什么要使用树这种存储结构? 首先要对数组和链表存储结构的优缺点进行分析: 数组 对于未排序的数组:插入速度快(直接在尾部插入),但是查询速度慢(时间复杂度为O(n)),需要依次遍历。 对于有序数组:查询时间通过二分查找,时间复杂度为O(logn)。可是当查找到查找到值后,需要将后续的值依次后移,时
阅读全文