#-*-coding:utf-8-*- ''' 字典树测试: python没有指针,但是可以用嵌套字典来实现树结构.对于非ascii的单词,统一用unicode编码来插入与搜索. ''' import time class TrieNode: #这是节点 def __init__(self): ''' 定义节点的数据结构,并初始化,设置标志位判断是否单词是否是完整的存在于字典树中 ''' self.data={} self.flag=False class TrieTree(object): def __init__(self): ''' 定义字典树的数据结构并初始化根节点 ''' self.root=TrieNode() def insert_func(self, data): ''' 字典树的插入函数,data为待插入的数据,类型为字符串 ''' top_node=self.root for i in range(len(data)): one_char=data[i] child_node=top_node.data.get(one_char) if not child_node: top_node.data[one_char]=TrieNode()#设置下一个节点 top_node=top_node.data[one_char] top_node.flag=True def search_func(self, data): ''' 字典树的查找函数,data类型为字符串 ''' top_node=self.root for i in range(len(data)): one_char=data[i] top_node=top_node.data.get(one_char) if not top_node: return False return top_node.flag if __name__ == '__main__': TestTrieTree=TrieTree() t3 = time.time() for i in range(0,1000): temp = str(i) TestTrieTree.insert_func(temp) t1 = time.time() #print TestTrieTree print 'insert消耗时间是:'+str(t1-t3) print TestTrieTree.search_func('1') t2 = time.time() print 'search消耗时间是:'+str(t2-t1) print '-------------------search over----------------------------'
python的字典树
最新推荐文章于 2022-12-04 20:21:05 发布