# Trie Tree 1
class TrieTree(object):
def __init__(self, key=None, size=0):
self.key = key
self.size = size
self.children = []
def insert(self, word):
node = self
for i in range(len(word)):
target = word[i]
found = False
node.size += 1
for child in node.children:
if child.key == target:
found = True
node = child
break
if not found:
child = TrieTree(target)
node.children.append(child)
node = child
def search(self, word):
node = self
for i in range(len(word)):
target = word[i]
found = False
for child in node.children:
if child.key == target:
found = True
node = child
break
if not found:
return 0
return node.size
def test():
tt = TrieTree()
tt.insert('babaab')
tt.insert('babbbaaaa')
tt.insert('abba')
tt.insert('aaaaabaa')
tt.insert('babaababb')
print(tt.search('babb'))
print(tt.search('bab'))
print(tt.search('abb'))
print(tt.search('aaaaa'))
print(tt.search('babbbb'))
# Trie Tree 2
class TrieTree(object):
def __init__(self):
self.size = 0
self.children = [None] * 26
def insert(self, word):
node = self
for w in word:
index = ord(w) - 97
node.size += 1
if node.children[index] == None:
node.children[index] = TrieTree()
node = node.children[index]
def search(self, word):
node = self
for w in word:
index = ord(w) - 97
if node.children[index] == None:
return 0
else:
node = node.children[index]
return node.size
参考#1014 : Trie树