Skip to content

Commit a0f7dc3

Browse files
Added solution
1 parent e2d3f17 commit a0f7dc3

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

topological_sort_using_dfs.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
2+
class Graph:
3+
def __init__(self, v):
4+
self.V = v
5+
self.graph = [[] for _ in range(self.V)]
6+
self.visited = [False] * (self.V)
7+
8+
def addEdge(self, u, v):
9+
self.graph[u].append(v)
10+
11+
def helper(self, i, visited, stack):
12+
'''
13+
Ensure that all the adjacent nodes are explored and pushed in stack first before the parent node..
14+
'''
15+
16+
self.visited[i] = True
17+
for adjacent in self.graph[i]:
18+
if not self.visited[adjacent]:
19+
self.helper(adjacent, self.visited, stack)
20+
stack.append(i)
21+
22+
def topologicalSort(self):
23+
stack = []
24+
for i in range(self.V):
25+
if not self.visited[i]:
26+
self.helper(i, self.visited, stack)
27+
print(stack[::-1])
28+
29+
if __name__ == '__main__':
30+
g = Graph(6)
31+
g.addEdge(5, 2)
32+
g.addEdge(5, 0)
33+
g.addEdge(4, 0)
34+
g.addEdge(4, 1)
35+
g.addEdge(2, 3)
36+
g.addEdge(3, 1)
37+
g.topologicalSort()
38+
39+
40+

0 commit comments

Comments
 (0)