【问题标题】:Breaking out of the recursion in multi nested tree python打破多嵌套树python中的递归
【发布时间】:2017-01-05 05:30:00
【问题描述】:

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

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 语句中打印 current_level 是正确的,但是如果我在 if 语句中输入 return 它不会返回。我想在找到节点后立即返回当前级别。有什么建议吗?

【问题讨论】:

    标签: python recursion


    【解决方案1】:

    现在您的代码正在返回current_level,无论您正在寻找的节点是否被发现。 您需要做的是仅在找到匹配节点时才返回current_level。如果没有,则返回指示未找到匹配节点的内容。此外,您需要确保结果在递归级别中正确传播,并且在找到匹配项时停止进一步查找。

    这是可能有帮助的代码。注意:我没有测试过。

    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
    

    如果找到value,将返回该级别。如果没有,-1 将被返回,表明它在树的那个部分的任何地方都找不到。

    【讨论】:

    • 是的,谢谢你,我正在为一件简单的事情发疯:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2022-10-24
    • 2020-09-23
    • 2013-08-30
    • 2020-10-05
    • 1970-01-01
    相关资源
    最近更新 更多