python数据结构与算法——字典树
2015-07-31 21:31
507 查看
class TrieTree(): def __init__(self): self.root = {} def addNode(self,str): # 树中每个结点(除根节点),包含到该结点的单词数,以及该结点后面出现字母的键 nowdict = self.root for i in range(len(str)): if str[i] not in nowdict: # 发现新的组合方式 nowdict[str[i]] = {'count':0,'prefix':str[:i+1]} nowdict = nowdict[str[i]] # 转移到下一个结点 nowdict['count'] += 1 def countWord(self,str): # 返回输入单词在树中出现的次数 nowdict = self.root for s in str: if s not in nowdict: return 0 nowdict = nowdict[s] # 匹配当前结点,转下一个结点 # 到了这一步证明单词存在 return nowdict['count'] if __name__=="__main__": pass Text = ['b','abc','abd','bcd','abcd','efg','hii','bcd'] t = TrieTree() for str in Text: t.addNode(str) print t.countWord('bcd') >>> 2
参考:http://blog.csdn.net/v_july_v/article/details/6897097
相关文章推荐
- JavaScript数据结构
- 数据结构:链表 >> 链表按结点中第j个数据属性排序(冒泡排序法)
- python数据结构与算法——完全树 与 最小/大堆
- python数据结构与算法——图的最短路径(Bellman-Ford算法)解决负权边
- python数据结构与算法——图的最短路径(Dijkstra算法)
- python数据结构与算法——图的最短路径(Floyd-Warshall算法)
- python数据结构与算法——图的广度优先和深度优先的算法
- python数据结构与算法——小猫钓鱼(使用队列)
- python数据结构与算法——栈
- python数据结构与算法——队列
- 【自考】 数据结构
- python数据结构与算法——链表
- python数据结构与算法——快速排序
- (转)hashmap hashtable 的区别 Hash table 内部的数据结构
- python数据结构与算法——桶排序
- python数据结构与算法——冒泡排序
- python数据结构与算法
- 数据结构上机实验之二分查找 SDUT
- [数据结构] Set的基本用法
- 算法和数据结构