我有一个多嵌套树结构,我试图找到提供的字符串/节点的当前级别。我使用递归来遍历节点并返回当前级别。
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语句中返回它不会返回。我想在找到节点后立即返回当前级别。任何建议?
答案 0 :(得分:2)
现在您的代码正在返回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
,表示在树的该部分中找不到它。