Python:关于我的dfs代码的问题

标签 python algorithm depth-first-search

这是我的 dfs 路径搜索的 python 代码:

class Graph(object):
   def __init__(self,dict=None):
       Graph.node = dict if dict != None else {}
   def add_node(self,nodedict):
       self.node = dict(self.node,**nodedict)
   def traversal_dfs(self,start,target,path = []):
       path = path + [start]
       for vertex in self.node[start]:
           print path,vertex,target
           if vertex == target:
               return path + [vertex]
           elif vertex not in path:
               path = self.traversal_dfs(vertex,target,path)
if __name__ == "__main__":
    g = Graph({'a':['b','c'],'b':['c','e'],'c':['d'],'d':['e'],'e':['f','a'],'f':['b']})
    print g.traversal_dfs('a','f')

但是当我运行它时,我得到了这样的错误:

Traceback (most recent call last):
  File "/Users/zzzyui/PycharmProjects/python_test/Traversal.py", line 25, in <module>
['a'] b f
    print g.traversal_dfs('a','f')
['a', 'b'] c f
['a', 'b', 'c'] d f
['a', 'b', 'c', 'd'] e f
  File "/Users/zzzyui/PycharmProjects/python_test/Traversal.py", line 19, in traversal_dfs
['a', 'b', 'c', 'd', 'e'] f f
    path = self.traversal_dfs(vertex,target,path)
stop flag
None e f
  File "/Users/zzzyui/PycharmProjects/python_test/Traversal.py", line 18, in traversal_dfs
    elif vertex not in path:
TypeError: argument of type 'NoneType' is not iterable

我想知道为什么条件 vertex == target 不起作用以及如何解决它?

最佳答案

您应该在 elif 语句中添加 return 语句。例如返回路径

关于Python:关于我的dfs代码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45390725/

相关文章:

python - Mailchimp API 3.0 批量订阅 - Mailchimp3 PY

Python 异步生成器不是异步的

python - 我正在尝试使用 python 实现 strassen 的算法,但出现错误

arrays - 对于数百万个对象,如果实时需要,是存储在数组中好还是存储在像redis这样的数据库中好?

java - 使用 `Collections.binarySearch` 签名实现二进制搜索

java - 二维数组的深度优先搜索

c++ - 使用邻接表(使用<vector>和链接列表)的C++中的DFS实现

python递归内存不足

python - Matplotlib:将背景颜色图与 pandas 列值匹配

graph - 在无向图中查找具有特定成本的路径