我正在做一项任务,我要在树上找到一只动物。
在这种情况下,我使用深度优先搜索和递归实现,到目前为止一切都很好。
但是,我必须在这棵树中打印出这种动物的深度。我根本不知道从哪里开始,我在网上找不到很多有用的资料。
这是类框架。
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)
感谢任何帮助,谢谢。
答案 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