From bafc82f0f385853de87af66fad2c58788f3ccd2b Mon Sep 17 00:00:00 2001 From: Madhur Kabra Date: Tue, 29 Oct 2019 22:49:01 +0530 Subject: [PATCH] Create DFS for a graph --- DFS for a graph | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 DFS for a graph diff --git a/DFS for a graph b/DFS for a graph new file mode 100644 index 0000000..3f89cf9 --- /dev/null +++ b/DFS for a graph @@ -0,0 +1,58 @@ +from collections import defaultdict + +# This class represents a directed graph using +# adjacency list representation +class Graph: + + # Constructor + def __init__(self): + + # default dictionary to store graph + self.graph = defaultdict(list) + + # function to add an edge to graph + def addEdge(self, u, v): + self.graph[u].append(v) + + # A function used by DFS + def DFSUtil(self, v, visited): + + # Mark the current node as visited + # and print it + visited[v] = True + print(v, end = ' ') + + # Recur for all the vertices + # adjacent to this vertex + for i in self.graph[v]: + if visited[i] == False: + self.DFSUtil(i, visited) + + # The function to do DFS traversal. It uses + # recursive DFSUtil() + def DFS(self, v): + + # Mark all the vertices as not visited + visited = [False] * (len(self.graph)) + + # Call the recursive helper function + # to print DFS traversal + self.DFSUtil(v, visited) + +# Driver code + +# Create a graph given +# in the above diagram +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) +############################## +OUTPUT- +2 0 1 3