non recursive DFS