From af2a2aa5b3737a3512ea7d0ff2d9d85eb286844b Mon Sep 17 00:00:00 2001 From: azadsingh03 Date: Sun, 20 Oct 2024 20:51:59 -0400 Subject: [PATCH] add the Topological function --- graphs/depth_first_search_2.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/graphs/depth_first_search_2.py b/graphs/depth_first_search_2.py index 8fe48b7f2b42..4b2ce36e31dc 100644 --- a/graphs/depth_first_search_2.py +++ b/graphs/depth_first_search_2.py @@ -108,6 +108,25 @@ def dfs_recursive(self, start_vertex: int, visited: list) -> None: print(" ", end="") self.dfs_recursive(i, visited) + def topological_sort(self): + visited = set() + stack = [] + + for vertex in self.vertex: + if vertex not in visited: + self.topological_sort_util(vertex, visited, stack) + + return stack[::-1] # Reverse the stack to get the correct order + + def topological_sort_util(self, v, visited, stack): + visited.add(v) + + for neighbor in self.vertex.get(v, []): + if neighbor not in visited: + self.topological_sort_util(neighbor, visited, stack) + + stack.append(v) # Push the vertex to stack + if __name__ == "__main__": import doctest @@ -123,5 +142,5 @@ def dfs_recursive(self, start_vertex: int, visited: list) -> None: g.add_edge(3, 3) g.print_graph() - print("DFS:") + print("Topological Sort:", g.topological_sort()) g.dfs()