在Python中删除树的根节点

0 投票
1 回答
648 浏览
提问于 2025-04-18 06:02

我正在用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

(显然,你可能想要更聪明地选择哪个节点来继承)。

撰写回答