我正在python中实现从二叉搜索树中删除节点。 我被困在一个边缘的情况下。 考虑下一个代码:
class Node():
def __init__(self, value, left=None, right=None):
self.value = value
self.left = left
self.right = right
root = Node(5)
root.right = Node(10)
如何实现删除根的功能。 我不希望函数返回新的根。 在C ++中,我可以修改指针使其指向其子节点,但是在python变量中基本上是labels。甚至可以在python中做到吗?
答案 0 :(得分:2)
确实没有办法替换root
并将其替换为名称root
所指向的实例所在的位置。
实现目标的唯一方法是改变root
以复制子节点。
def delete(node, inheritLeft=True):
child = node.left if inheritLeft else node.right
node.value = child.value
node.left = child.left
node.right = child.right
(显然,您可能希望在选择要继承的节点方面做更聪明的事情。)