Skip to content

Commit 4b840ec

Browse files
author
stuffacc
committed
DFS task
1 parent 6e31449 commit 4b840ec

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

src/9/Depth_first_search.py

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
class Graph:
2+
graph = {}
3+
DFS_VISIT = []
4+
index = 0
5+
6+
def __init__(self):
7+
self.add_vertex("A")
8+
self.add_vertex("B")
9+
self.add_vertex("C")
10+
self.add_vertex("D")
11+
self.add_vertex("E")
12+
self.add_vertex("F")
13+
14+
self.add_edge("A", "B")
15+
self.add_edge("A", "C")
16+
self.add_edge("A", "D")
17+
18+
self.add_edge("B", "C")
19+
20+
self.add_edge("C", "D")
21+
22+
def add_vertex(self, vertex):
23+
self.graph[vertex] = []
24+
25+
def add_edge(self, vertex1, vertex2):
26+
self.graph.get(vertex1).append(vertex2)
27+
28+
self.graph.get(vertex2).append(vertex1)
29+
30+
def DFS_step(self, vertex, visited):
31+
if vertex not in visited:
32+
visited.append(vertex)
33+
34+
links = self.graph.get(vertex)
35+
for link in links:
36+
self.DFS_step(link, visited)
37+
38+
def DFS(self, startVertex):
39+
if self.graph.get(startVertex) is None:
40+
return []
41+
42+
visited = []
43+
self.DFS_step(vertex=startVertex, visited=visited)
44+
45+
self.DFS_VISIT = visited
46+
return visited
47+
48+
def __iter__(self):
49+
return self
50+
51+
def __next__(self):
52+
if self.index < len(self.DFS_VISIT):
53+
vertex = self.DFS_VISIT[self.index]
54+
self.index += 1
55+
56+
return vertex
57+
58+
self.index = 0
59+
raise StopIteration
60+
61+
def __str__(self):
62+
return str(self.graph)
63+
64+
65+
if __name__ == '__main__':
66+
graph = Graph()
67+
print("Graph: ", graph)
68+
69+
print("\nDFS route: ", graph.DFS(startVertex="A"))
70+
71+
print("\niterable")
72+
for i in graph:
73+
print(i, end=" ")

0 commit comments

Comments
 (0)