【发布时间】:2015-04-09 22:59:39
【问题描述】:
我正在研究一个二叉搜索树类,我们必须使用递归来实现删除方法。这是给我们的代码。
def remove (self, x):
def recurse (p):
# Modify this method.
if p==None:
return p
elif x<p.data:
return p
elif x>p.data:
return p
elif p.left==None and p.right==None: # case (1)
return p
elif p.right==None: # case (2)
return p
elif p.left==None: # case (3)
return p
else: # case (4)
return p
self.root = recurse (self.root)
显然,每个条件不应该只返回 p。而且我很确定第一个 if 和两个 elif 用于“定位”包含 x 的节点。但是我不确定如何实现这四种情况。任何意见将不胜感激。
另外,最终目标是使用此方法迭代 BST 并删除每个节点。
【问题讨论】:
-
递归的一项要求是什么?它需要 _______,并且必须至少有一个 ___________。
标签: python data-structures tree binary-search-tree