Skip to content

Instantly share code, notes, and snippets.

@Allwin12
Created May 18, 2020 06:54
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 Allwin12/24c74cfd48eb8e55c2e6baff2c71ccd8 to your computer and use it in GitHub Desktop.
Save Allwin12/24c74cfd48eb8e55c2e6baff2c71ccd8 to your computer and use it in GitHub Desktop.
class Node:
def __init__(self, name, value):
self.name = name
self.value = value
self.right = None
self.left = None
def add(self, value):
if not value == self.value:
if value > self.value:
if not self.right:
self.right = Node(None, value)
else:
self.right.add(value)
elif value < self.value:
if not self.left:
self.left = Node(None, value)
else:
self.left.add(value)
else:
raise ValueError('Value exists')
else:
raise ValueError('Value exists')
def find(self, value):
if value == self.value:
return True
elif value > self.value:
if not self.right:
raise Exception
self.right.find(value)
elif value < self.value:
if not self.left:
raise Exception
self.left.find(value)
class BinaryTree:
def __init__(self, root_value):
self.root = Node('root', root_value)
def add(self, value):
self.root.add(value)
def __repr__(self):
return str(self.root.name)
def find(self, value):
try:
self.root.find(value)
except Exception:
return False
else:
return True
""" Try the tree """
bt = BinaryTree(root_value=10)
bt.add(15)
bt.add(5)
bt.add(2)
bt.add(23)
print(bt.find(5))
print(bt.find(100))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment