如何在树的JSON字典上实现具有递归函数的DFS?

时间:2018-04-26 17:54:23

标签: python recursion binary-tree depth-first-search

我使用递归的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)

1 个答案:

答案 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

编辑:在找不到索引的情况下使用最终返回路径进行更新。