practice of Depth-First-Search and Recursion