在深度优先搜索中确定深度

时间:2014-09-03 18:33:39

标签: python implementation depth-first-search

我正在做一项任务,我要在树上找到一只动物。

在这种情况下,我使用深度优先搜索和递归实现,到目前为止一切都很好。

但是,我必须在这棵树中打印出这种动物的深度。我根本不知道从哪里开始,我在网上找不到很多有用的资料。

这是类框架。

class Node:
    children = None
    ratatosk = None 

    def __init__(self):
        self.children = []
        self.ratatosk = False

这是我的实施。

def dfs(root):
    for children in root.children:
        if root.ratatosk:
            return True # should return depth
        dfs(children)

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个返回深度和找到的对象的版本:

def search(root):
    if root.ratatosk:
        return root, 0
    for i in root.children:
        found, depth = search(i)
        if found is not None:
            return found, depth + 1
    return None, 0

class Node:
    def __init__(self):
        self.children = []
        self.ratatosk = False

# example

thing = Node()
obj = Node()
layer1 = Node()
layer2 = Node()

thing.ratatosk = True
obj.children.append(layer1)
layer1.children.append(layer2)
layer2.children.append(thing)

found, depth = search(obj)
print(found, found is thing, depth)  # <__main__.Node object at 0x7fc652c5efd0> True 3