尝试在python中刷新我的DSA知识,所以我正在编写Graph类。在实现find_all_paths方法时,遇到了一些我不太了解的东西。我将首先发布代码:
def find_all_paths(graph, start, end, path=[]):
path = path + [start]
if start == end:
return [path]
if not graph.has_key(start):
return []
paths = []
for node in graph[start]:
if node not in path:
newpaths = find_all_paths(graph, node, end, path)
for newpath in newpaths:
paths.append(newpath)
return paths
graph = {'A': ['B', 'C'],
'B': ['C', 'D'],
'C': ['D'],
'D': ['C'],
'E': ['F'],
'F': ['C']}
print(find_all_paths(graph, 'A', 'D'))
方法的第一行将起始节点添加到路径列表中。我最初把它写成路径+ = [开始]而不是路径=路径+ [开始]。第一个返回所需的输出,而第二个没有。换一种说法: - 当使用路径+ = [开始]时,我得到[[' A',' B',' C',' D']]作为输出。 - 当使用path = path + [start]时,我得到[[' A',' B',' C',' D'] ,[' A',' B',' D'],[' A',' C',& #39; D']]作为一个ouptut。 任何有关为什么会被非常感谢的见解。 提前谢谢。