此代码打印图形中从startNode到destinationNode的所有路径。
我从https://www.geeksforgeeks.org/find-paths-given-source-destination/复制了它,并对它进行了轻微的修改。代码运行得非常好,但我需要返回路径而不是打印路径,但不知道如何执行。
如果我将return添加到printAllPathsUtil(i, d, unvisited, path)
,它只返回其中一个路径
我不太擅长递归,现在不知道该怎么办
async def getAllPathsUtil(s, d, unvisited, path):
unvisited.append(s)
path.append(s)
if s == d:
path
else:
for i in (await children(s)):
if not(i in unvisited):
await getAllPathsUtil(i, d, unvisited, path)
path.pop()
unvisited.remove(s)
async def printAllPaths(startNode, destinationNode):
all_paths = await getAllPathsUtil(startNode, destinationNode, [], [])
print(all_paths)
如果您想保留递归算法,那么使用
yield
可能是最简单的选择但作为一种更好的方法,我建议用堆栈替换递归调用,它将消除最大递归深度问题
相关问题 更多 >
编程相关推荐