[关闭]
@WillireamAngel 2018-05-28T11:01:05.000000Z 字数 670 阅读 807

图算法

数据结构


深度优先(DFS)

  1. class graph:
  2. def __init__(self, gdict=None):
  3. if gdict is None:
  4. gdict = {}
  5. self.gdict = gdict
  6. # Check for the visisted and unvisited nodes
  7. def dfs(graph, start, visited=None):
  8. if visited is None:
  9. visited = set()
  10. visited.add(start)
  11. print(start)
  12. for next in graph[start] - visited:
  13. dfs(graph, next, visited)
  14. return visited
  15. gdict = {"a": {"b", "c"},
  16. "b": {"a", "d"},
  17. "c": {"a", "d"},
  18. "d": {"e"},
  19. "e": {"a"}
  20. }
  21. dfs(gdict, 'a')

广度优先(BFS)

  1. import collections
  2. class graph:
  3. def __init__(self,gdict=None):
  4. if gdict is None:
  5. gdict = {}
  6. self.gdict = gdict
  7. def bfs(graph,startnode):
  8. seen,queue = {startnode}, collections.deque([startnode])
  9. while queue:
  10. vertex = queue.popleft()
  11. print(vertex)
  12. for node in graph[vertex]:
  13. if node not in seen:
  14. seen.add(node)
  15. queue.append(node)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注