@@ -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
46112if __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