DFS and BFS, DFS use recursion