class BinaryNode:
def __init__(self, value):
self.data = value
self.left = None
self.right = None
def contains(root, value):
if root is None:
return False
if value == root.data:
return True
if value < root.data:
return contains(root.left, value)
else:
return contains(root.right, value)
def insert(root, value):
if root is None:
root = BinaryNode(value)
else:
if value > root.data:
if root.right is None:
root.right = BinaryNode(value)
else:
return insert(root.right, value)
else:
if root.left is None:
root.left = BinaryNode(value)
else:
return insert(root.left, value)
def getMin(root):
if root.left is None:
return root
return getMin(root.left)
def remove(root, value):
if root is None:
return False
elif value < root.data:
remove(root.left, value)
elif value > root.data:
remove(root.right, value)
else:
if root.left is None and root.right is None:
del root
def inorder(root):
if root is not None:
inorder(root.left)
print(root.data)
inorder(root.right)
b = BinaryNode(10)
insert(b, 9)
insert(b, 11)
insert(b,8)
insert(b,9.5)
remove(b, 9.5)
inorder(b)
i'm constructing the functions of a binary search tree. So far, in writing my remove function I handle the case in which the root to be removed from the tree is a left node (node without any children). For this, all I would have to do say del root. This has no effect at all on the tree and the value 9.5 still exists.
del
only removes the reference, here the local nameroot
. It won't delete theb
reference you have at the top. – Beekeeper