Last active
July 30, 2017 09:05
-
-
Save keenhenry/a4c6e36b9b74876e4b00de1169f5a226 to your computer and use it in GitHub Desktop.
Python Trie implementation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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