在Python中删除树的根节点
我正在用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中,变量本质上是标签。在Python中真的可以这样做吗?
1 个回答
2
确实没有办法直接替换掉 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
(显然,你可能想要更聪明地选择哪个节点来继承)。