Skip to content

Commit dd3d15e

Browse files
Kprafulpre-commit-ci[bot]tianyizheng02
authored andcommitted
Adds Doc test in depth_first_search_2.py (TheAlgorithms#10094)
* Adds Doc test in depth_first_search_2.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fixes depth_first_search_2.py formatting * Cleanup --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com>
1 parent 007a560 commit dd3d15e

File tree

1 file changed

+71
-9
lines changed

1 file changed

+71
-9
lines changed

graphs/depth_first_search_2.py

+71-9
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,44 @@ def __init__(self):
99

1010
# for printing the Graph vertices
1111
def print_graph(self) -> None:
12+
"""
13+
Print the graph vertices.
14+
15+
Example:
16+
>>> g = Graph()
17+
>>> g.add_edge(0, 1)
18+
>>> g.add_edge(0, 2)
19+
>>> g.add_edge(1, 2)
20+
>>> g.add_edge(2, 0)
21+
>>> g.add_edge(2, 3)
22+
>>> g.add_edge(3, 3)
23+
>>> g.print_graph()
24+
{0: [1, 2], 1: [2], 2: [0, 3], 3: [3]}
25+
0 -> 1 -> 2
26+
1 -> 2
27+
2 -> 0 -> 3
28+
3 -> 3
29+
"""
1230
print(self.vertex)
1331
for i in self.vertex:
1432
print(i, " -> ", " -> ".join([str(j) for j in self.vertex[i]]))
1533

1634
# for adding the edge between two vertices
1735
def add_edge(self, from_vertex: int, to_vertex: int) -> None:
36+
"""
37+
Add an edge between two vertices.
38+
39+
:param from_vertex: The source vertex.
40+
:param to_vertex: The destination vertex.
41+
42+
Example:
43+
>>> g = Graph()
44+
>>> g.add_edge(0, 1)
45+
>>> g.add_edge(0, 2)
46+
>>> g.print_graph()
47+
{0: [1, 2]}
48+
0 -> 1 -> 2
49+
"""
1850
# check if vertex is already present,
1951
if from_vertex in self.vertex:
2052
self.vertex[from_vertex].append(to_vertex)
@@ -23,6 +55,21 @@ def add_edge(self, from_vertex: int, to_vertex: int) -> None:
2355
self.vertex[from_vertex] = [to_vertex]
2456

2557
def dfs(self) -> None:
58+
"""
59+
Perform depth-first search (DFS) traversal on the graph
60+
and print the visited vertices.
61+
62+
Example:
63+
>>> g = Graph()
64+
>>> g.add_edge(0, 1)
65+
>>> g.add_edge(0, 2)
66+
>>> g.add_edge(1, 2)
67+
>>> g.add_edge(2, 0)
68+
>>> g.add_edge(2, 3)
69+
>>> g.add_edge(3, 3)
70+
>>> g.dfs()
71+
0 1 2 3
72+
"""
2673
# visited array for storing already visited nodes
2774
visited = [False] * len(self.vertex)
2875

@@ -32,18 +79,41 @@ def dfs(self) -> None:
3279
self.dfs_recursive(i, visited)
3380

3481
def dfs_recursive(self, start_vertex: int, visited: list) -> None:
82+
"""
83+
Perform a recursive depth-first search (DFS) traversal on the graph.
84+
85+
:param start_vertex: The starting vertex for the traversal.
86+
:param visited: A list to track visited vertices.
87+
88+
Example:
89+
>>> g = Graph()
90+
>>> g.add_edge(0, 1)
91+
>>> g.add_edge(0, 2)
92+
>>> g.add_edge(1, 2)
93+
>>> g.add_edge(2, 0)
94+
>>> g.add_edge(2, 3)
95+
>>> g.add_edge(3, 3)
96+
>>> visited = [False] * len(g.vertex)
97+
>>> g.dfs_recursive(0, visited)
98+
0 1 2 3
99+
"""
35100
# mark start vertex as visited
36101
visited[start_vertex] = True
37102

38-
print(start_vertex, end=" ")
103+
print(start_vertex, end="")
39104

40105
# Recur for all the vertices that are adjacent to this node
41106
for i in self.vertex:
42107
if not visited[i]:
108+
print(" ", end="")
43109
self.dfs_recursive(i, visited)
44110

45111

46112
if __name__ == "__main__":
113+
import doctest
114+
115+
doctest.testmod()
116+
47117
g = Graph()
48118
g.add_edge(0, 1)
49119
g.add_edge(0, 2)
@@ -55,11 +125,3 @@ def dfs_recursive(self, start_vertex: int, visited: list) -> None:
55125
g.print_graph()
56126
print("DFS:")
57127
g.dfs()
58-
59-
# OUTPUT:
60-
# 0 -> 1 -> 2
61-
# 1 -> 2
62-
# 2 -> 0 -> 3
63-
# 3 -> 3
64-
# DFS:
65-
# 0 1 2 3

0 commit comments

Comments
 (0)