Implement Trie (Prefix Tree)
Implement a trie with insert
, search
, and startsWith
methods.
Note:
You may assume that all inputs are consist of lowercase letters a-z
.
实现Tire树的几个函数。
Python下的实现可以在TireNode中使用字典存储关键字,既减少存储空间,也方便查找,其次,也就不需要将字母转换成对应的数字表示其值了。
代码:
class TrieNode(object):
def __init__(self):
"""
Initialize your data structure here.
"""
self.tnlst = {}
# self.count = 1
self.terminal = False
class Trie(object):
def __init__(self):
self.root = TrieNode()
def insert(self, word):
"""
Inserts a word into the trie.
:type word: str
:rtype: void
"""
r = self.root
for w in word:
if w not in r.tnlst:
r.tnlst[w] = TrieNode()
r = r.tnlst[w]
r.terminal = True
def search(self, word):
"""
Returns if the word is in the trie.
:type word: str
:rtype: bool
"""
r = self.root
for w in word:
if w in r.tnlst:
r = r.tnlst[w]
else:
return False
return r.terminal
def startsWith(self, prefix):
"""
Returns if there is any word in the trie
that starts with the given prefix.
:type prefix: str
:rtype: bool
"""
r = self.root
for w in prefix:
if w in r.tnlst:
r = r.tnlst[w]
else:
return False
return True