1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
from collections import defaultdict
class :
def __init__(self): self.graph = defaultdict(list)
def addEdge(self, u, v): self.graph[u].append(v)
def DFSUtils(self, v, visited): visited[v] = True print(v)
for i in self.graph[v]: if not visited[i]: self.DFSUtils(i, visited)
def DFS(self, v): visited = [False] * len(self.graph) print("DFS results:") self.DFSUtils(v, visited)
def BFS(self, v): visited = [False] * len(self.graph) queue = [v] visited[v] = True print("BFS results:") while queue: s = queue.pop(0) print(s, " ") for i in self.graph[s]: if not visited[i]: queue.append(i) visited[i] = True
def main(): g = Graph() g.addEdge(0, 1) g.addEdge(0, 2) g.addEdge(1, 2) g.addEdge(2, 0) g.addEdge(2, 3) g.addEdge(3, 3)
print("Following is DFS from (staring from vertex 2)") g.DFS(2) g.BFS(2)
if __name__ == '__main__': main()
|
近期评论