Python实现简单字典树的方法


Posted in Python onApril 29, 2016

本文实例讲述了Python实现简单字典树的方法。分享给大家供大家参考,具体如下:

#coding=utf8
"""代码实现了最简单的字典树,只支持由小写字母组成的字符串。
在此代码基础上扩展一下,就可以实现比较复杂的字典树,比如带统计数的,或支持更多字符的字典树,
或者是支持删除等操作。
"""
class TrieNode(object):
  def __init__(self):
    # 是否构成一个完成的单词
    self.is_word = False
    self.children = [None] * 26
class Trie(object):
  def __init__(self):
    self.root = TrieNode()
  def add(self, s):
    """Add a string to this trie."""
    p = self.root
    n = len(s)
    for i in range(n):
      if p.children[ord(s[i]) - ord('a')] is None:
        new_node = TrieNode()
        if i == n - 1:
          new_node.is_word = True
        p.children[ord(s[i]) - ord('a')] = new_node
        p = new_node
      else:
        p = p.children[ord(s[i]) - ord('a')]
        if i == n - 1:
          p.is_word = True
          return
  def search(self, s):
    """Judge whether s is in this trie."""
    p = self.root
    for c in s:
      p = p.children[ord(c) - ord('a')]
      if p is None:
        return False
    if p.is_word:
      return True
    else:
      return False
if __name__ == '__main__':
  trie = Trie()
  trie.add('str')
  trie.add('acb')
  trie.add('acblde')
  print trie.search('acb')
  print trie.search('ac')
  trie.add('ac')
  print trie.search('ac')

更多关于Python相关内容可查看本站专题:《Python字典操作技巧汇总》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
深入探究Python中变量的拷贝和作用域问题
May 05 Python
Python采用Django制作简易的知乎日报API
Aug 03 Python
在Python程序员面试中被问的最多的10道题
Dec 05 Python
python使用Apriori算法进行关联性解析
Dec 21 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
详解Python安装tesserocr遇到的各种问题及解决办法
Mar 07 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
python实现音乐播放和下载小程序功能
Apr 26 Python
Python操作Excel把数据分给sheet
May 20 Python
Django 解决由save方法引发的错误
May 21 Python
Python中操作符重载用法分析
Apr 29 #Python
Python中绑定与未绑定的类方法用法分析
Apr 29 #Python
Python过滤列表用法实例分析
Apr 29 #Python
Python松散正则表达式用法分析
Apr 29 #Python
python中私有函数调用方法解密
Apr 29 #Python
简单学习Python time模块
Apr 29 #Python
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 #Python
You might like
支持oicq头像的留言簿(二)
2006/10/09 PHP
php preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
JavaScript 继承详解(一)
2009/07/13 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
JS+CSS3实现的简易钟表效果示例
2019/04/13 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
python scipy卷积运算的实现方法
2019/09/16 Python
关于numpy数组轴的使用详解
2019/12/05 Python
美国鲜花递送:UrbanStems
2021/01/04 全球购物
机械设计职业生涯规划书
2013/12/27 职场文书
师范教师毕业鉴定
2014/01/13 职场文书
民族团结先进个人材料
2014/02/05 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
护士个人自我鉴定
2014/03/24 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
投资意向协议书
2015/01/29 职场文书
goland 设置project gopath的操作
2021/05/06 Golang