码迷,mamicode.com
首页 > 其他好文 > 详细

简述字典树

时间:2017-06-27 23:27:42      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:相同   ac自动机   alpha   color   红色   ges   树状   注意   span   

字典是用来查阅某一个字或词的,所谓字典树也就是用于查找某一个数字序列或字符串的。字典树又称Trie树,是一种用树状结构存储字符串的数据结构,经典题目有最长公共前缀、单词统计等。

字典树的存储

字典树的存储原理可见下图。树的根节点什么都不存,接下来每一层的一个节点存储一个字母(或数字),直到将所有的字符串存储完毕。

技术分享

上图中的字典树存储了ans、alpha、cry、bee、beef五个单词。

由上图可以看出,以小写字母为例,字符串在存储时先按照每个单词的首字母分为若干个节点,首字母相同的会进入同一个分支,然后再比较第二个字母……依此类推,可以将所有的单词都读入树中。

红色标出的是一个字符串结束的位置,这种标记有利于确定当前是否查找到了一个字符串。

值得注意的是,在字典树中,同一层的字符串长度是相同的。例如第三层s、p、y、e四个字母,含有它们的字符串在此时一定都有三个字母存入树中。

 

为了方便起见,本文中将根节点的子节点所在一层称为第一层,下一层称为第二层,依此类推。

 

字典树的插入

插入与存储的原理相同。首先判断被插入字符串的首字母是否存在于第一层,如果不存在就直接将字符串插入到根节点上;如果存在,则沿着匹配到的字母往下走,再判断被插入字符串的第二个字母是否存在于第二层……一直走到字符串全部被插入结束。

字典树的查找

在查找一个字符串时,可以经过树中每一个正确(树上的字母与字符串中相应位置的字母匹配)的节点进行比较,直到被查找的字符串比较完毕,如果这时恰巧遇到结束标记,则说明被查找字符串在树中存在。这一比较方法的时间复杂度是O(n),与暴力枚举的时间相比,已经大大提高。

由此可以发现,字典树可以用来匹配字符串。AC自动机就是以字典树为基础的多字符串匹配算法。

简述字典树

标签:相同   ac自动机   alpha   color   红色   ges   树状   注意   span   

原文地址:http://www.cnblogs.com/shingen/p/7087414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!