以下是我正在处理涉及树木的程序。我目前正在尝试从创建的树中删除特定节点。有人可以提出一些关于我做错的建议吗?有问题的代码是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
答案 0 :(得分:0)
错误是由self.root.value
不存在引起的;您可能想要的属性称为data
,而不是value
。
接下来,您的Node
个对象没有delete()
方法,因此也会失败。将该方法添加到节点(提升其左侧或右侧属性并重新平衡其子树),或者在Tree.remove()
方法中执行所有操作。
答案 1 :(得分:0)
错误很明显:您尝试访问value
的{{1}}属性,但没有一个;有一个叫Node
,也许就是你的意思。