Depth First Search (DFS) is a searching algorithm used in graph or tree data structures. It starts from a given node and explores as far as possible along each branch before backtracking. DFS is implemented using recursion or a stack.
Steps:
Start from a node (typically the root node or any arbitrary node).
Mark the node as visited.
Visit its adjacent nodes that have not been visited yet.
This process continues recursively or using a stack, visiting each node until all nodes are explored.
If a node has already been visited, it is not revisited.
Time Complexity:
For a graph with V vertices and E edges, the time complexity of DFS is O(V + E).
def dfs(graph, node, visited=None): if visited is None: visited = set() # Set to keep track of visited nodes visited.add(node) print(node) # Print the node as we visit it for neighbor in graph[node]: if neighbor not in visited: dfs(graph, neighbor, visited) # Recursively visit unvisited neighbors# Example graphgraph = { 'A': ['B', 'C'], 'B': ['A', 'D', 'E'], 'C': ['A', 'F'], 'D': ['B'], 'E': ['B', 'F'], 'F': ['C', 'E']}# Call DFS starting from node 'A'dfs(graph, 'A')