DFS explores as deep as possible before backtracking, using a stack (or recursion):
Uses: Cycle detection, topological sort, connected components, path finding