Trie树的详解及应用

Trie树,又称单词查找树或键树,是1种树形结构,是1种哈希树的变种。典型利用是用于统计和排序大量的字符串(但不但限于字符串),所以常常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效力比哈希表高。Trie的核心思想是空间换时间。利用字符串的公共前缀来下降查询时间的开消以到达提高效力的目的。

  Trie 的强大的地方就在于它的时间复杂度。它的插入和查询时间复杂度都为 O(k) ,其中 k 为 key 的长度,与
Trie 中保存了多少个元素无关。Hash 表号称是 O(1) 的,但在计算 hash 的时候就肯定会是 O(k) ,而且还有碰撞之类的问题;Trie 的缺点是空间消耗很高。


Trie树特性:

1)根节点不包括字符,除根节点外每个节点都只包括1个字符。

2)从根节点到某1节点,路径上经过的字符连接起来,为该节点对应的字符串。

3)每一个节点的所有子节点包括的字符都不相同。

4)如果字符的种数为n,则每一个结点的出度为n,这也是空间换时间的体现,浪费了很多的空间。

5)插入查找的复杂度为O(n),n为字符串长度。


基本思想(以字母树为例):
1、插入进程
对1个单词,从根开始,沿着单词的各个字母所对应的树中的节点分支向下走,直到单词遍历完,将最后的节点标记为红色,表示该单词已插入Trie树。
2、查询进程
一样的,从根开始依照单词的字母顺序向下遍历trie树,1旦发现某个节点标记不存在或单词遍历完成而最后的节点未标记为红色,则表示该单词不存在,若最后的节点标记为红色,表示该单词存在。

字典树的数据结构:
    利用串构建1个字典树,这个字典树保存了串的公共前缀信息,因此可以下降查询操作的复杂度。
    下面以英文单词构建的字典树为例,这棵Trie树中每一个结点包括26个孩子结点,由于总共有26个英文字母(假定单词都是小写字母组成)。
    则可声明包括Trie树的结点信息的结构体:

[cpp] view
plaincopy

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » Trie树的详解及应用

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡