classTNode:def__init__(self, val):
self.val = val
self.end =False
self.children ={}classTrie:def__init__(self):
self.root = TNode('')definsert(self, word):
temp = self.root
for cx, c inenumerate(word):if c notin temp.children:
temp.children[c]= TNode(c)
temp = temp.children[c]
temp.end =Truedefsearch(self, word):
temp = self.root
for c in word:if c notin temp.children:returnFalse
temp = temp.children[c]return temp.end
defstartsWith(self, prefix):
temp = self.root
for c in prefix:if c notin temp.children:returnFalse
temp = temp.children[c]returnTrue