Bst
class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data
class BinarySearchTree:
def __init__(self):
self.root = None
def insert(self, data):
new_node = Node(data)
if self.root is None:
self.root = new_node
else:
current = self.root
while True:
if data < current.data:
if current.left is None:
current.left = new_node
break
else:
current = current.left
else:
if current.right is None:
current.right = new_node
break
else:
current = current.right
def search(self, data):
current = self.root
while current is not None and current.data != data:
if data < current.data:
current = current.left
else:
current = current.right
if current is None:
print(f"{data} not found in the BST")
else:
print(f"{data} found in the BST")
def inorder_traversal(self, node):
if node is not None:
self.inorder_traversal(node.left)
print(node.data)
self.inorder_traversal(node.right)
def preorder_traversal(self, node):
if node is not None:
print(node.data)
self.preorder_traversal(node.left)
self.preorder_traversal(node.right)
def postorder_traversal(self, node):
if node is not None:
self.postorder_traversal(node.left)
self.postorder_traversal(node.right)
print(node.data)