飘逸的python - 实现trie树
来源:互联网 发布:淘宝上的创想电玩 编辑:程序博客网 时间:2024/05/14 11:10
trie,又称前缀树或字典树. 它利用字符串的公共前缀来节约存储空间.
- 定义
Trie树中每个单词都是通过character by character方法进行存储,相同前缀单词共享前缀节点.
可以看到,每条路径组成一个单词.上面这颗树存了to/tea/ted/ten/inn这些词.- 性质
- (1)根节点不包含字符,除根节点外的每个节点只包含一个字符。
- (2)从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。
- (3)每个节点的所有子节点包含的字符串不相同。
- 性质
- 应用
- 词频统计
比直接用hash节省空间 - 搜索提示
输入前缀的时候提示可以构成的词 - 作为辅助结构
如后缀树,AC自动机等的辅助结构
- 词频统计
实现
虽然python没有指针,但是可以用嵌套字典来实现树结构.对于非ascii的单词,统一用unicode编码来插入与搜索.
#coding=utf-8class Trie: root = {} END = '/' def add(self, word): #从根节点遍历单词,char by char,如果不存在则新增,最后加上一个单词结束标志 node = self.root for c in word: node=node.setdefault(c,{}) node[self.END] = None def find(self, word): node = self.root for c in word: if c not in node: return False node = node[c] return self.END in node
1 0
- 飘逸的python - 实现trie树
- 飘逸的python - 实现glob style pattern
- 飘逸的python - 实现链式调用
- 飘逸的python - 实现控制台进度条效果
- 飘逸的python
- 飘逸的python
- 飘逸的python
- 飘逸的python
- Trie树python实现
- 飘逸的python - 实现一个极简的优先队列
- 飘逸的python - 两种with语句实现方法
- 飘逸的python - 两种with语句实现方法
- 飘逸的python - property及实现lazy property
- 飘逸的python - 赛程表算法
- 飘逸的python - 赛程表算法
- 飘逸的python - and_or大法
- 飘逸的python - 一个简单的AST(抽象语法树)
- Trie树的实现
- android aidl
- 链表
- Log4net udpAppender 和Log2Console的应用
- MFC与.NET的区别
- Unix传奇 (下篇)
- 飘逸的python - 实现trie树
- 五大常用算法之三:贪心算法
- 如何让service 不会被第三方任务管理器kill
- Java数据类型
- tbody的作用
- TCP/IP 某些最常见的错误原因码 (errno)列表(转)
- HDOJ 题目1312 Red and Black(dfs)
- PLSQL==>高级游标
- nehe的OpenGL教程--on mac (6)