A graph traversal algorithm that traverses a graph by exploring as far as possible along each branch before backtracking.