Skip to content

Instantly share code, notes, and snippets.

@keenhenry
Last active July 30, 2017 09:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save keenhenry/a4c6e36b9b74876e4b00de1169f5a226 to your computer and use it in GitHub Desktop.
Save keenhenry/a4c6e36b9b74876e4b00de1169f5a226 to your computer and use it in GitHub Desktop.
Python Trie implementation
#!/usr/bin/env python
class Node(object):
__slots__ = ('letters', 'children', 'num_occurs')
def __init__(self, letters=None):
self.letters = letters # only leaf nodes have non-None letters
self.children = {}
self.num_occurs = 0
class Trie(object):
"""This implementation of trie has no path compression
"""
def __init__(self):
self.root = Node()
def insert(self, word):
node = self.root
node.num_occurs += 1
for letter in word:
if letter not in node.children:
node.children[letter] = Node()
node = node.children[letter]
node.num_occurs += 1
else:
node.letters = word
def find(self, word):
node = self.root
for letter in word:
if letter in node.children:
node = node.children[letter]
else:
return None
else:
return node
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment