from collections import defaultdict class Graph: def __init__(self): self.graph = defaultdict(list) def addEdge(self, u, v): self.graph[u].append(v) def DFSUtil(self, v, visited): visited[v] = True print(v, end = ' ') for i in self.graph[v]: if visited[i] == False: self.DFSUtil(i, visited) def DFS(self, v): visited = [False] * (max(self.graph)+1) self.DFSUtil(v, visited) # Create a graph given 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 (starting from vertex 2)") g.DFS(2)