код выводит ответы "Right" и "Left" вместо ожидаемых целых чисел
Был дан пример постройки бинарного дерева, но мне нужно сделать так что бы он выводил целые числа от [-50,50]. В данном случае, код выводит ответы "Right" и "Left", не могу разобраться как мне это реализовать.
class Node():
def __init__(self, key):
self.key = key
self.left = None
self.right = None
self.parent = None
class Tree():
def __init__(self):
self.root = None
def add_node(self, key, node=None):
if node is None:
node = self.root
if self.root is None:
self.root = Node(key)
else:
if key <= node.key:
if node.left is None:
node.left = Node(key)
node.left.parent = node
print("left")
return
else:
return self.add_node(key, node=node.left)
else:
if node.right is None:
node.right = Node(key)
node.right.parent = node
print("right")
return
else:
return self.add_node(key, node=node.right)
def search(self, key, node=None):
if node is None:
node = self.root
if self.root.key == key:
print ("key is at the root")
return self.root
else:
if node.key == key:
print ("key exists")
return node
elif key < node.key and node.left is not None:
print ("left")
return self.search(key, node=node.left)
elif key > node.key and node.right is not None:
print ("right")
return self.search(key, node=node.right)
else:
print ("key does not exist")
return None
def delete_node(self, key, node=None):
# search for the node to be deleted in tree
if node is None:
node = self.search(key) # return the node to be deleted
# root has no parent node
if self.root.key == node.key: # if it is root
parent_node = self.root
else:
parent_node = node.parent
'''case 1: The node has no chidren'''
if node.left is None and node.right is None:
if key <= parent_node.key:
parent_node.left = None
else:
parent_node.right = None
return
'''case 2: The node has children'''
''' if it has a single left node'''
if node.left is not None and node.right is None:
if node.left.key < parent_node.key:
parent_node.left = node.left
else:
parent_node.right = node.left
return
'''if it has a single right node'''
if node.right is not None and node.left is None:
if node.key <= parent_node.key:
parent_node.left = node.right
else:
parent_node.right = node.right
return
if node.left is not None and node.right is not None:
min_value = self.find_minimum(node)
node.key = min_value.key
min_value.parent.left = None
return
def find_minimum(self, node=None):
if node is None:
node = self.root
'''find mimimum value from the right subtree'''
'''case when there is only a root node'''
if node.right is not None:
node = node.right
else:
return node
if node.left is not None:
return self.find_minimum(node=node.left)
else:
return node
def tree_data(self, node=None):
if node is None:
node = self.root
stack = []
while stack or node:
if node is not None:
stack.append(node)
node = node.left
else:
node = stack.pop()
yield node.key
node = node.right
t = Tree()
t.add_node(10)
t.add_node(13)
t.add_node(14)
t.add_node(8)
t.add_node(9)
t.add_node(7)
t.add_node(11)