重学算法 系列2 - Trie树(Trie tree)

本文来自搜索引擎研究,转载须注明出处。

Trie树,又叫前缀树,是一种排序树数据结构,用来存储关联数组,其中的key通常是字符串。不像二叉搜索树(BST)的节点上不存储相关的keyTrie树上的节点位置用来表示与它相关的key。所有的后继结点都拥有相同的前缀,而根节点关联的是空字符串。通常节点不关联值,只有其上的叶子节点和中间节点表示你感兴趣的key

下面是Trie树相对于二叉搜索树(BST)的优点:

1.       查找key更快,对于一个长度为mkey,最差时间复杂度是O(m)。而BST需要用O(logN)来比较keyN是树上元素的个数。由于查找依赖于树的深度,因此最差的情况下BST需要O(m log N)的时间。

2.       Trie树需要更小的存储空间。

3.       Trie树可以方便地用来做最长前缀匹配(LPM)。

 

Trie树和Hash表做比较,可以发现下面的优点和缺点:

1.       在最糟情况下,Trie的查找时间是O(m),它高于hash表的(N),因为hash表可能会遇到key冲突。不过典型的hash表查找时间是O(1).

2.       Trie树中没有不同key的冲突问题。

3.       在新增key的情况下不需要像hash表那样增加或者修改hash函数。

4.       Trie树可以提供key字母序的值。

 

Trie也有一些缺点:

1.       Trie查找要比hash表来的要慢

2.       很多key是无法用字串来表示的,只能用多个字串来表示,例如浮点数。

 

Trie通常用来存储字典,比如说手机上的字典,它利用了Trie的快速查找和添加删除功能。但是,如果存储是最重要的考量的话,无环DFA是将会比Trie更节省空间。

Tire也能很好的应用在模糊匹配算法方面,包括一些拼写检查的软件。

 

转载于:https://www.cnblogs.com/yuetiantian/archive/2009/10/18/1585374.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值