从树中删除特定节点

时间:2017-04-30 23:10:24

标签: python

以下是我正在处理涉及树木的程序。我目前正在尝试从创建的树中删除特定节点。有人可以提出一些关于我做错的建议吗?有问题的代码是def删除部分。其余部分正常工作。

    def remove(self, value):
        if self.root and self.root.value == value:  # special case for removing the root
            self.root = self.root.delete()
            return

        else:  # general case, removing a child node of some parent
            parent = self.root
            while parent:
                if value < parent.value:
                    child = parent.left
                    if child and child.value == value:
                        parent.left = child.delete()
                        return
                    parent = child
                else:
                    child = parent.right
                    if child and child.value == value:
                        parent.right = child.delete()
                        return
                    parent = child

2 个答案:

答案 0 :(得分:0)

错误是由self.root.value不存在引起的;您可能想要的属性称为data,而不是value

接下来,您的Node个对象没有delete()方法,因此也会失败。将该方法添加到节点(提升其左侧或右侧属性并重新平衡其子树),或者在Tree.remove()方法中执行所有操作。

答案 1 :(得分:0)

错误很明显:您尝试访问value的{​​{1}}属性,但没有一个;有一个叫Node,也许就是你的意思。