Implement Trie (Prefix Tree)
class TreeNode:
def __init__(self, val):
self.val = val
self.children = {}
self.end = False
def add_child(self, c):
self.children[c] = TreeNode(c)
class Trie:
def __init__(self):
self.root = TreeNode('')
def insert(self, word):
temp = self.root
for cx, c in enumerate(word):
node = temp.children.get(c)
if not node:
temp.add_child(c)
temp = temp.children[c]
temp.end = True
def search(self, word):
temp = self.root
for cx, c in enumerate(word):
node = temp.children.get(c)
if not node:
return False
temp = temp.children[c]
return True if temp.end else False
def startsWith(self, prefix):
temp = self.root
for cx, c in enumerate(prefix):
node = temp.children.get(c)
if not node:
return False
temp = temp.children[c]
return True