我使用递归的Depth-First-Search函数来遍历每个节点都有索引的树。
在遍历期间,我需要将一个节点(其类型为dict
)分配给变量,以便从外部范围进一步处理。
似乎我使用了无用的任务。最有效的方法是什么?
def dfs(json_tree, index, result):
if json_tree['index'] == index:
result = json_tree['index'] ## not work!
return
if 'children' not in json_tree:
return
for c in json_tree['children']:
dfs(c, index, result)
答案 0 :(得分:1)
请尝试使用return
结果。请注意,我更改了您的功能签名。一旦找到索引,这也会使搜索短路。
def dfs(json_tree, index):
if json_obj['index'] == index:
return json_tree['index']
if 'children' not in json_obj:
return None
for c in json_tree['children']:
result = dfs(c, index)
if result is not None:
return result
return None
编辑:在找不到索引的情况下使用最终返回路径进行更新。