trees+python中的递归问题

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:

我想说的是,这是一个家庭作业,但我不要求有关代码的帮助

我有一个奇怪的问题。我正在尝试实现一个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
这只是一个伪代码,因为我不能在这里发布我的全部代码。问题是

当我写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组件。