Я работаю над двоичным деревом поиска, и мы должны реализовать метод remove с помощью рекурсии. Вот код, который нам дал.Дерево двоичного поиска PYTHON - Рекурсивное удаление
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. И я уверен, что первый, если и два elifs используются, чтобы «найти» узел, содержащий x. Однако я не уверен, как реализовать четыре случая. Любой вход был бы оценен.
Кроме того, конечной целью является использование этого метода для итерации через BST и удаления каждого узла.
Что такое требование рекурсии? он должен быть _______ и должен иметь хотя бы один ___________. –