diff --git a/graphs/depth_first_search_2.py b/graphs/depth_first_search_2.py index c932e7629..3072d527c 100644 --- a/graphs/depth_first_search_2.py +++ b/graphs/depth_first_search_2.py @@ -8,58 +8,58 @@ class Graph: self.vertex = {} # for printing the Graph vertices - def printGraph(self): + def print_graph(self) -> None: print(self.vertex) - for i in self.vertex.keys(): + for i in self.vertex: print(i, " -> ", " -> ".join([str(j) for j in self.vertex[i]])) # for adding the edge between two vertices - def addEdge(self, fromVertex, toVertex): + def add_edge(self, from_vertex: int, to_vertex: int) -> None: # check if vertex is already present, - if fromVertex in self.vertex.keys(): - self.vertex[fromVertex].append(toVertex) + if from_vertex in self.vertex: + self.vertex[from_vertex].append(to_vertex) else: # else make a new vertex - self.vertex[fromVertex] = [toVertex] + self.vertex[from_vertex] = [to_vertex] - def DFS(self): + def dfs(self) -> None: # visited array for storing already visited nodes visited = [False] * len(self.vertex) # call the recursive helper function for i in range(len(self.vertex)): - if visited[i] is False: - self.DFSRec(i, visited) + if not visited[i]: + self.dfs_recursive(i, visited) - def DFSRec(self, startVertex, visited): + def dfs_recursive(self, start_vertex: int, visited: list) -> None: # mark start vertex as visited - visited[startVertex] = True + visited[start_vertex] = True - print(startVertex, end=" ") + print(start_vertex, end=" ") # Recur for all the vertices that are adjacent to this node - for i in self.vertex.keys(): - if visited[i] is False: - self.DFSRec(i, visited) + for i in self.vertex: + if not visited[i]: + self.dfs_recursive(i, visited) if __name__ == "__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) + g.add_edge(0, 1) + g.add_edge(0, 2) + g.add_edge(1, 2) + g.add_edge(2, 0) + g.add_edge(2, 3) + g.add_edge(3, 3) - g.printGraph() + g.print_graph() print("DFS:") - g.DFS() + g.dfs() # OUTPUT: - # 0  ->  1 -> 2 - # 1  ->  2 - # 2  ->  0 -> 3 - # 3  ->  3 + # 0 -> 1 -> 2 + # 1 -> 2 + # 2 -> 0 -> 3 + # 3 -> 3 # DFS: - #  0 1 2 3 + # 0 1 2 3