trie树
来源:互联网 发布:串流软件 编辑:程序博客网 时间:2024/06/02 18:44
(1)字典树(Trie树)
Trie是个简单但实用的数据结构,通常用于实现字典查询。我们做即时响应用户输入的AJAX搜索框时,就是Trie开始。本质上,Trie是一颗存储多个字符串的树。相邻节点间的边代表一个字符,这样树的每条分支代表一则子串,而树的叶节点则代表完整的字符串。和普通树不同的地方是,相同的字符串前缀共享同一条分支。还是例子最清楚。给出一组单词,inn, int, at, age, adv, ant, 我们可以得到下面的Trie:
可以看出:
- 每条边对应一个字母。
- 每个节点对应一项前缀。叶节点对应最长前缀,即单词本身。
- 单词inn与单词int有共同的前缀“in”, 因此他们共享左边的一条分支,root->i->in。同理,ate, age, adv, 和ant共享前缀"a",所以他们共享从根节点到节点"a"的边。
- 查询非常简单。比如要查找int,顺着路径i -> in -> int就找到了。
- 搭建Trie的基本算法也很简单,无非是逐一把每则单词的每个字母插入Trie。插入前先看前缀是否存在。如果存在,就共享,否则创建对应的节点和边。比如要插入单词add,就有下面几步:
- 考察前缀"a",发现边a已经存在。于是顺着边a走到节点a。
- 考察剩下的字符串"dd"的前缀"d",发现从节点a出发,已经有边d存在。于是顺着边d走到节点ad
- 考察最后一个字符"d",这下从节点ad出发没有边d了,于是创建节点ad的子节点add,并把边ad->add标记为d。
0 0
- hihoCoder1014 Trie树 [Trie]
- TRIE树
- TRIE树
- TRIE树
- trie 树
- Trie树
- Trie树
- Trie树
- Trie树
- trie树
- trie树
- Trie 树
- Trie树
- Trie 树
- trie 树
- Trie树
- Trie树
- Trie树
- android异常
- java发送电子邮件email
- MDK5+CH340驱动安装
- 如何在代码和xml中实现中划线的方法!
- C#通过并口连接斑马打印机
- trie树
- Object C
- 访问图像像素的一些方法
- SpringMVC和Struts2比较
- eclipse下的servers中的tomcat消失
- Oracle的软解析(soft prase)和硬解析(hard prase)
- tomcat安装与myeclipse配置
- Android中Volley架包的使用
- C#指定斑马打印机名称来打印,不区分并口,USB等