How do you implement depth-first search (DFS) in TypeScript?
DFS is a graph traversal algorithm that explores as deep as possible along each branch before backtracking. You can implement it in TypeScript using recursion or a stack.
Depth-First Search (DFS) is a graph traversal technique that explores as far along a branch as possible before backtracking. This approach is commonly used for solving problems like maze traversal, topological sorting, and detecting cycles in graphs. To implement DFS in TypeScript, you can use a recursive approach or an explicit stack to manage the backtracking process. Starting from a given source node, DFS visits a node, marks it as visited, and recursively explores each unvisited neighbor. If no more neighbors are available, it backtracks to the previous node to explore other branches. When using recursion, the call stack itself manages the backtracking. In the iterative version, an explicit stack is used to simulate this process. DFS can be applied to both connected and disconnected graphs, and it’s particularly useful for problems where you need to explore all possible paths or detect strongly connected components. In TypeScript, DFS can be implemented efficiently with a graph represented as an adjacency list, and the algorithm runs in O(V + E) time, where V is the number of vertices and E is the number of edges.