Binary Search Tree Search for an Node
Code:
class Node(object):
def __init__(self, data = None):
self.data = data
self.left = None
self.right = None
class BST:
def __init__(self):
self.root = None
def insert(self, data):
if self.root is None:
self.root = Node(data)
else:
self._insert(data,self.root)
def _insert(self, data, current_node):
if data < current_node.data:
if current_node.left is None:
current_node.left = Node(data)
else:
self._insert(data, current_node.left)
elif data > current_node.data:
if current_node.right is None:
current_node.right = Node(data)
else:
self._insert(data, current_node.right)
else:
print("Value is Already present in Tree.")
def find(self, data):
if self.root:
is_found = self._find(data, self.root)
if is_found:
return True
return False
else:
return None
def _find(self, data, current_node):
if data > current_node.data and current_node.right:
return self._find(data, current_node.right)
elif data < current_node.data and current_node.left:
return self._find(data, current_node.left)
if data == current_node.data:
return True
bst = BST()
bst.insert(4)
bst.insert(2)
bst.insert(8)
bst.insert(5)
bst.insert(10)
print(bst.find(10))