从python中的树中删除根

时间:2014-05-09 20:15:02

标签: 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变量中基本上是labels。甚至可以在python中做到吗?

1 个答案:

答案 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

(显然,您可能希望在选择要继承的节点方面做更聪明的事情。)