我想提一下这是一个功课,但不是要求与代码相关的帮助。
我遇到了这个奇怪的问题。我正在尝试实现btree删除并且有一些递归返回问题
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
这只是一个伪代码,因为我无法在此处发布我的整个代码。问题是
当我写delete(Tree,Tree.root,value)
时,它首次运行recurses并执行叶节点部分,但返回一个None值。
我已经检查了所有内容,甚至在return tree
语句上面打印了一些东西,并且在树有一些价值之前就可以了。
任何人都可以告诉我在这个递归函数中我做错了什么....
非常感谢..
答案 0 :(得分:0)
快速猜测,修复:
...
else:
return delete(tree,node.Child,value) # you missed the return here
...
我想你应该递归到节点的所有子节点,而不仅仅是一个节点(可能有多个节点,对吧?)。