add a DFS algortihm