trie树

trie树

  最近接触到数据处理这一块,也就自然接触到了Trie树。它又称字典树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索系统用于文本词频统计,与比哈希表比查询效率要高。

主要思想

  它的主要思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销。

  作为一种树型结构,利用不同的节点来保存某一信息的一位信息,该信息的的最大位数决定了tire数的深度。为了能表示所有可能的信息,它的每个节点的出度的最大值就是信息所包含的不同字符的最多个数。在每个单词的结尾我们需要保存这个单词的个数。

  从树的根开始查询,按照深度优先来查询,直到无法继续。每一层表示这信息的一位信息,当无法继续向下搜索时候,说明这个信息已经查询完毕。

  所以,如果你要保存的是数字,那么我们的每个节点就要包括0-9这十个数字来保证我们信息的完整性;如果你要保存的是英文单词,那么每个节点就要包括26个英文单词了。

  例如:abc,abc,ab,bc要保存在一棵trie树中,那么我们的节点就要包含a,b,c了,那么trie树的结构如下:

 

优缺点

  每个节点都要保存由abc三种字母组成的信息,那么必然会有些节点上的信息未被被使用,tire树会造成空间的浪费。

  查询的次数与单词中字母个数相同,这就使得算法的时间复杂度为O(len)。

  它在信息检索,字符串匹配等领域有广泛的应用,同时,它也是很多算法和复杂数据结构的基础,如后缀树,AC自动机等。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值