多嵌套树python中递归的突破

多嵌套树python中递归的突破,python,recursion,Python,Recursion,我有一个多嵌套的树结构,我试图找到提供的字符串/节点的当前级别。我使用递归遍历节点并返回当前级别 def dicq(self,value,current_level): d = {} for child in self.children: if child.name == value: print current_level else: (child.dicq(value,current_level+1)) re

我有一个多嵌套的树结构,我试图找到提供的字符串/节点的当前级别。我使用递归遍历节点并返回当前级别

def dicq(self,value,current_level):
    d = {}
    for child in self.children:
       if child.name == value:
        print current_level
       else:
        (child.dicq(value,current_level+1))
    return current_level


root.dicq('7.3',1)

root是嵌套的树结构,我给它7.3(我找到的节点级别)和1(默认级别表示第一个子节点)。如果我只是在If语句中打印当前的\u级别,它是正确的,但是如果我在If语句中输入return,它不会返回。我想在找到节点后立即返回当前级别。有什么建议吗?

现在,您的代码正在返回当前的\u级别,无论您要查找的节点是否找到。 仅当找到匹配节点时,才需要返回
当前\u级别
。如果不是,则返回指示未找到匹配节点的内容。此外,您需要确保结果正确地跨递归级别传播,并且在找到匹配项时停止进一步查找

下面的代码可能会有所帮助。注意:我没有测试它

def dicq(self,value,current_level):
    d = {}
    retval = -1
    for child in self.children:
       if child.name == value:
           retval = current_level
       else:
           retval = child.dicq(value,current_level+1)
           if retval != -1:
                break
    return retval

如果找到
,将返回该级别。如果没有,将返回
-1
,表明在树的该部分的任何位置都找不到它。

现在,您的代码将返回当前级别的
,无论您要查找的节点是否找到。
仅当找到匹配节点时,才需要返回
当前\u级别
。如果不是,则返回指示未找到匹配节点的内容。此外,您需要确保结果正确地跨递归级别传播,并且在找到匹配项时停止进一步查找

下面的代码可能会有所帮助。注意:我没有测试它

def dicq(self,value,current_level):
    d = {}
    retval = -1
    for child in self.children:
       if child.name == value:
           retval = current_level
       else:
           retval = child.dicq(value,current_level+1)
           if retval != -1:
                break
    return retval

如果找到
,将返回该级别。如果没有,将返回
-1
,表明它在树的该部分的任何位置都找不到。

是的,谢谢,我为一件简单的事情发疯了:(是的,谢谢,我为一件简单的事情发疯了:(