trees+python中的递归问题
我想说的是,这是一个家庭作业,但我不要求有关代码的帮助 我有一个奇怪的问题。我正在尝试实现一个btree删除,但遇到了一些递归返回问题trees+python中的递归问题,python,Python,我想说的是,这是一个家庭作业,但我不要求有关代码的帮助 我有一个奇怪的问题。我正在尝试实现一个btree删除,但遇到了一些递归返回问题 def delete ( tree , node , value ) : if node.leaf == True: # delete value from node return tree elif node.leaf == False and value in node:
def delete ( tree , node , value ) :
if node.leaf == True:
# delete value from node
return tree
elif node.leaf == False and value in node:
# do other stuff
else :
delete(tree,node.Child,value)
#recurse till you find leaf node
这只是一个伪代码,因为我不能在这里发布我的全部代码。问题是
当我写deleteTree,Tree.root,value时,它第一次运行递归并执行叶节点部分,但返回一个None值
我已经检查了所有内容,甚至在returntree语句上方打印了一些内容,到目前为止,树有一些价值是可以的
谁能告诉我在这个递归函数中我做错了什么
非常感谢。一个快速猜测,修复到:
...
else:
return delete(tree,node.Child,value) # you missed the return here
...
我想你应该递归到节点的所有子节点,而不是只有一个,可能不止一个,对吗?node.leaf=False看起来很阴暗。您应该使用if node.leaf/if not node.leaf来避免这些潜在的打字错误。如果不粘贴可运行的工作代码,则很难说问题出在哪里。此外,elif处的node.leaf==假检查是多余的-这是由于第一个if检查而隐含的,即只需在node.中写入elif值即可添加到Oben Sonne的建议中,Python建议在这种情况下使用if而不是elif,因为不需要else组件。