Skip to content

Instantly share code, notes, and snippets.

@micaiahparker
Created March 20, 2016 16:37
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 micaiahparker/1c22a12feb9d05316e60 to your computer and use it in GitHub Desktop.
Save micaiahparker/1c22a12feb9d05316e60 to your computer and use it in GitHub Desktop.
class Node:
def __init__(self, key, value, parent):
self.key = key
self.value = value
self.parent = parent
self.left = None
self.right = None
self.set_children()
def add(self, key, value):
self.path(key).add(key, value)
def search(self, key):
return self.path(key).value
def path(self, key):
if self.key > key:
return self.left.path(key)
if self.key < key:
return self.right.path(key)
return self
def set_children(self):
self.left = NullNode(self)
self.right = NullNode(self)
class NullNode(Node):
def __init__(self, parent):
super().__init__(None, None, parent)
def set_children(self):
pass
def add(self, key, value):
self.__class__ = Node
self.__init__(key, value, self.parent)
def path(self, key):
return self
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment