问题描述
我无法删除我的二进制搜索树的根。其余所有节点都可以删除,但是Root遇到了一些问题,非常感谢您帮助我进行一些小的更改。我在某些网站上看到过,它说要以 None 开头的root,然后再开始加数字,但即使这样也不起作用。 它说您不能添加一个nonetype。 这是我的代码,
class BST:
def __init__(self,data):
self.right = None
self.left = None
self.data = data
def insert(self,root_insert,key):
if root_insert is None:
return BST(key)
else:
if root_insert.data == key:
return root_insert
elif root_insert.data < key:
root_insert.right = self.insert(root_insert.right,key)
else:
root_insert.left = self.insert(root_insert.left,key)
return root_insert
def find_val(self,data):
if data < self.data:
if self.left is None:
return str(data) + " Not Found"
return self.left.find_val(data)
elif data > self.data:
if self.right is None:
return str(data) + " Not Found"
return self.right.find_val(data)
else:
return str(self.data) + " is Found"
def inorder(self,root_inorder):
if root_inorder:
self.inorder(root_inorder.left)
print(root_inorder.data,end=" ")
self.inorder(root_inorder.right)
def postorder(self,root_postorder):
if root_postorder:
self.postorder(root_postorder.left)
self.postorder(root_postorder.right)
print(root_postorder.data,end=" ")
def preOrder(self,root_preOrder):
if root_preOrder:
print(root_preOrder.data,end=" ")
self.preOrder(root_preOrder.left)
self.preOrder(root_preOrder.right)
def deleteNode(self,root_delete,data):
if root_delete is None:
return root_delete
if data < root_delete.data:
root_delete.left = self.deleteNode(root_delete.left,data)
elif data > root_delete.data:
root_delete.right = self.deleteNode(root_delete.right,data)
else:
if root_delete.left is None:
temp = root_delete.right
return temp
elif root_delete.right is None:
temp = root_delete.left
return temp
root_delete.data = self.min_value_node(root_delete.right)
root_delete.right = self.deleteNode(root_delete.right,root_delete.data)
return root_delete
def min_value_node(self,node):
current = node
while current.left is not None:
current = current.left
return current
root = BST(12)
root = root.insert(root,6)
root = root.insert(root,14)
root = root.insert(root,3)
root = root.insert(root,70)
root = root.insert(root,15)
root = root.insert(root,35)
root = root.insert(root,30)
root = root.insert(root,31)
print("********IN ORDER********")
root.inorder(root)
print("\n********PRE ORDER********")
root.preOrder(root)
print("\n********POST ORDER********")
root.postorder(root)
print("")
print(root.find_val(7))
print(root.find_val(14))
root.deleteNode(root,6)
print("********IN ORDER********")
root.inorder(root)
root.deleteNode(root,14)
print("\n********IN ORDER********")
root.inorder(root)
root.deleteNode(root,3)
print("\n********IN ORDER********")
root.inorder(root)
root.deleteNode(root,70)
print("\n********IN ORDER********")
root.inorder(root)
root.deleteNode(root,15)
print("\n********IN ORDER********")
root.inorder(root)
root.deleteNode(root,30)
print("\n********IN ORDER********")
root.inorder(root)
root.deleteNode(root,31)
print("\n********IN ORDER********")
root.inorder(root)
root.deleteNode(root,35)
print("\n********IN ORDER********")
root.inorder(root)
root.deleteNode(root,12)
print("\n********IN ORDER********")
root.inorder(root)
root.deleteNode(root,12)
print("\n********IN ORDER********")
root.inorder(root)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)