数据结构
fishmei2
这个作者很懒,什么都没留下…
展开
-
线段树
定义线段树的非叶子节点都是区间,而叶子节点是原始数据本身。非叶子节点中经常存放着叶子节点的聚合数据,例如最大值,最小值,数量值等等。由于线段树的区间只跟数据的数值范围有关,不跟数据有关。所以线段树的高度最大为log(数值范围)。例如存放int值的线段树,高度最大为log(INT_MAX)作用包含查找树的所有功能1.快速查找元素是否存在,log(n)2.快速查找树中的最大原创 2016-03-02 10:05:45 · 218 阅读 · 0 评论 -
查找树
定义排序二叉树,节点是数据本身,左子树比父节点要小,右字树比父节点要大用法1.快速查找节点是否存在在树中。log(n)2.快速树种的最大值或者最小值。log(n)优化由于原始排序二叉树受输入数据影响,可能导致极度的不平衡。所以有了平衡二叉树的说法,平衡二叉树的高度始终保持在log(n)的时间复杂度上。平衡二叉树的变种1.AVL树2.红黑树3.伸展树4原创 2016-03-02 10:05:41 · 209 阅读 · 0 评论 -
前缀树
定义前缀树,是将单词的每个字符作为树的节点。前缀树衍生自基数树,数字的基数是位,字符串的基数就是字符。所以前缀树相当于基为字符的基数树。另外,前缀树又成为Tire树。作用1.快速查找单词A是否在字符串B中。O(n*m)2.快速查找单词A,B,C是否在字符串C中。O(n*m)3.快速查找指定前缀下含有哪些单词。O(m)优化1.AC自动机。朴素的Trie树在进行模式匹配时,原创 2016-03-02 10:05:40 · 395 阅读 · 0 评论 -
后缀树
定义后缀树建立的是单个单词的所有后缀的Trie树。作用1.快速判断单词A是否在句子B中,以及匹配的最长长度。O(n m)2.快速判断单词A在句子B中的重复次数。O(m)3.快速判断单词A与单词B的最长公共子串。O(m)4.快速找出句子A中的最长回文字串。O(m)优化1.后缀数组。后缀树的数组形式。2.后缀状态机。后缀树的状态机形式。原创 2016-03-02 10:05:40 · 235 阅读 · 0 评论