Assignment No-4
Assignment No-4
class BSTNode:
self.key = key
self.left = None
self.right = None
self.parent = None
if self.left is None:
self.left = node
node.parent = self
else:
self.left.insert(node)
if self.right is None:
self.right = node
node.parent = self
else:
self.right.insert(node)
def inorder(self):
self.right.inorder()
new_node.parent = self.parent
if self.parent.left == self:
self.parent.left = new_node
self.parent.right = new_node
else:
self.key = new_node.key
self.left = new_node.left
self.right = new_node.right
new_node.left.parent = self
new_node.right.parent = self
def find_min(self):
current = self
return current
def remove(self):
successor = self.right.find_min()
self.key = successor.key
successor.remove()
self.replace_node_of_parent(self.left)
self.replace_node_of_parent(self.right)
else:
self.replace_node_of_parent(None)
return self.left.search(key)
else:
return None
return self.right.search(key)
else:
return None
return self
class BSTree:
def __init__(self):
self.root = None
def inorder(self):
self.root.inorder()
new_node = BSTNode(key)
if self.root is None:
self.root = new_node
else:
self.root.insert(new_node)
to_remove = self.search(key)
if (self.root == to_remove
self.root = None
else:
to_remove.remove()
return self.root.search(key)
bstree = BSTree()
print('add <key>')
print('remove <key>')
print('inorder')
print('quit')
while True:
operation = do[0].strip().lower()
if operation == 'add':
key = int(do[1])
bstree.add(key)
key = int(do[1])
bstree.remove(key)
elif operation == 'inorder':
bstree.inorder()
print()
break
Output
add <key>
remove <key>
inorder
quit
Inorder traversal: 6 9 20 50 80
Inorder traversal: 6 9 50 80