Skip to content

Instantly share code, notes, and snippets.

@patricklucas
Created February 26, 2012 02:23
Show Gist options
  • Save patricklucas/1912314 to your computer and use it in GitHub Desktop.
Save patricklucas/1912314 to your computer and use it in GitHub Desktop.
Python Trie
class TrieNode(object):
ident = None
children = None
def __init__(self):
self.children = {}
def insert(self, prefix, key=None):
if prefix:
try:
self.children[prefix[0]].insert(prefix[1:], key)
except KeyError:
self.children[prefix[0]] = TrieNode().insert(prefix[1:], key)
elif key:
self.ident = key
return self
def search(self, prefix, key=None):
if not prefix:
return self.ident == key if key else True
try:
return self.children[prefix[0]].search(prefix[1:], key)
except KeyError:
return False
class Trie(TrieNode):
def insert(self, key):
return super(Trie, self).insert(key, key)
def search(self, key):
return super(Trie, self).search(key, key)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment