对于一个连通图,从一个节点出发,沿着一个分支一直深入,直至无法继续深入为止( 回退至上一个分支节点 ),且每个节点仅访问一次。
递归实现
void dfs(myNode* sam) { sam->visited = 1; for(int i = 0; i < n; i++) if(sam->next[i]->visited == 0)dfs(sam->next[i]); }
使用栈实现
将访问的节点入栈,再通过栈顶节点的next指针找到新的节点入栈,当与栈顶的节点关联的节点都已被访问过时,栈顶节点出栈。最终遍历完成整个连通图。(其实递归只是自动形成了递归栈,无需我们手动操作栈)