diff --git a/code/algorithm_applications/src/depth_first_search/README.md b/code/algorithm_applications/src/depth_first_search/README.md new file mode 100644 index 0000000000..e65fdffb36 --- /dev/null +++ b/code/algorithm_applications/src/depth_first_search/README.md @@ -0,0 +1,5 @@ +# Depth-First Search (DFS) + +is a graph traversal algorithm that explores a graph or tree data structure by visiting as far down a branch as possible before backtracking. It's called "depth-first" because it explores as deeply as possible along each branch before moving to a sibling branch. DFS can be implemented using both iterative and recursive methods. It is a fundamental algorithm for many graph-related tasks, including searching for paths, determining connectivity, and exploring tree structures. + +# For further reading about this you can visit : https://www.geeksforgeeks.org/python-program-for-depth-first-search-or-dfs-for-a-graph/ \ No newline at end of file diff --git a/code/algorithm_applications/src/depth_first_search/dfs.py b/code/algorithm_applications/src/depth_first_search/dfs.py new file mode 100644 index 0000000000..a3243e5a8b --- /dev/null +++ b/code/algorithm_applications/src/depth_first_search/dfs.py @@ -0,0 +1,57 @@ +# Python3 program to print DFS traversal +# from a given given graph +from collections import defaultdict + +# This class represents a directed graph using +# adjacency list representation + + +class Graph: + # Constructor + def __init__(self): + # default dictionary to store graph + self.graph = defaultdict(list) + + # function to add an edge to graph + def addEdge(self, u, v): + self.graph[u].append(v) + + # A function used by DFS + def DFSUtil(self, v, visited): + # Mark the current node as visited + # and print it + visited.add(v) + print(v, end=" ") + + # Recur for all the vertices + # adjacent to this vertex + for neighbour in self.graph[v]: + if neighbour not in visited: + self.DFSUtil(neighbour, visited) + + # The function to do DFS traversal. It uses + # recursive DFSUtil() + def DFS(self, v): + # Create a set to store visited vertices + visited = set() + + # Call the recursive helper function + # to print DFS traversal + self.DFSUtil(v, visited) + + +# Driver code + + +# Create a graph given +# in the above diagram +g = Graph() +g.addEdge(0, 1) +g.addEdge(0, 2) +g.addEdge(1, 2) +g.addEdge(2, 0) +g.addEdge(2, 3) +g.addEdge(3, 3) + +print("Following is DFS from (starting from vertex 2)") +g.DFS(2)