123
分类: 高性能计算
2013-09-18 11:29:05
Trie树,又称为单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树数据结构。
典型应用:统计和排序、查询大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本的词频统计等。
优点:最大限度地减少无谓的字符串比较,查询效率比哈希表高。
核心思想:空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。
缺点:内存消耗非常大。
实现过程包括以下两个阶段:
1)插入过程
对于一个单词,从根开始,沿着单词的各个字母所对应的树中的节点分支向下走,直到单词遍历完,将最后的节点标记为红色,表示该单词已插入trie树。
2)查找过程
其方法为:
(1) 从根结点开始一次搜索;
(2) 取得要查找关键词的第一个字母,并根据该字母选择对应的子树并转到该子树继续进行检索;
(3) 在相应的子树上,取得要查找关键词的第二个字母,并进一步选择对应的子树进行检索。
(4) 迭代过程……
(5) 在某个结点处,关键词的所有字母已被取出,则读取附在该结点上的信息,即完成查找。
其他操作类似处理。
即从根开始按照单词的字母顺序向下遍历trie树, 一旦发现某个节点标记不存在或者单词遍历完成而最后的节点未标记为红色,则表示该单词不存在,若最后的节点标记为红色,表示该单词存在。如下图 中:trie树中存在的就是abc、d、da、dda四个单词。在实际的问题中可以将标记颜色的标志位改为数量count等其他符合题目要求的变量。
查找分析
在trie树中查找一个关键字的时间和树中包含的结点数无关,而取决于组成关键字的字符数。
而二叉查找树的查找时间和树中的结点数有关O(log2n)。
如果要查找的关键字可以分解成字符序列且不是很长,利用trie树查找速度优于二叉查找树。
应用
1、字符串检索,词频统计,搜索引擎的热门查询
3、排序
Trie树是一棵多叉树,只要先序遍历整棵树,输出相应的字符串便是按字典序排序的结果。
4、作为其他数据结构和算法的辅助结构
如后缀树,AC自动机等。