python - 这个二叉树的删除节点功能是否正确?
问题描述
我已经实现了一个删除函数,它从二叉树中删除一个特定节点。num_child() 返回节点的子节点数,get_left() 返回左子节点等等。它适用于我拥有的所有情况试过了。我想知道代码是否正确?有什么方法可以简化代码吗?
def _delete(self):
# if the node has 2 children
if self.num_child() == 2:
print("Cannot delete the node coz it has two child")
# if the node has 1 child
if self.num_child() == 1:
#if left child is present
if self.get_left() is not None:
child=self.left
#for root condition
if self.parent is None:
self.left.parent = None
self.left= None
else:
self.left.parent = self.parent
if self.data is self.parent.get_left():
self.parent.left = self.left
if self.data is self.parent.get_right():
self.parent.right = self.left
#if right child is present
if self.get_right() is not None:
#for root condition
if self.parent is None:
self.right.parent = None
self.right= None
else:
self.right.parent = self.parent
if self.data is self.parent.get_left():
self.parent.left = self.right
if self.data is self.parent.get_right():
self.parent.right = self.right
print(f"{self.data} has been deleted")
return
if self.num_child() == 0:
if self.data is self.parent.get_left():
self.parent.left = None
self.parent= None
elif self.data is self.parent.get_right():
self.parent.right = None
self.parent= None
print(f"{self.data} has been deleted")
解决方案
推荐阅读
- bash - Bash函数没有返回预期的输出
- excel-formula - Excel公式如果那么
- php - 强制 Apache 为 HEAD 请求返回 Content Length 0
- python - 如何将值添加到数组的末尾
- facebook - 添加新主页时 Facebook 主页会失去权限
- ms-access - 使用 ms-access 自动键宏来切换主菜单、功能区和导航窗格
- xml - powershell变量中的重复xml文档
- jpa - TransactionRequiredException 在 try/catch 异常块中持续存在时
- java - MariaDB 的休眠命名策略 (UPPER_SNAKE_CASE)
- php - Bluehost:PHPMailer 将已发送消息保存在已发送项目中