深度优先搜索和广度优先搜索
广度优先搜索:
策略:
从起点开始遍历其相邻接的节点,由此向外不断扩散 (使用队列)
BFS() { 输入起始点; 初始化所有顶点标记为未遍历; 初始化一个队列queue并将起始点放入队列; while(queue不为空) { 从队列中删除一个顶点s并标记为已遍历; 将s邻接的所有还没遍历的点加入队列; } }
深度优先遍历
策略是:
从一个顶点v出发,首先将v标记为已遍历的顶点,然后选择一个邻接于v的尚未遍历的顶点u,如果u不存在,本次搜素终止。如果u存在,那么从u又开始一次DFS。如此循环直到不存在这样的顶点。(使用栈)
DFS(顶点v) { 标记v为已遍历; for(对于每一个邻接v且未标记遍历的点u) DFS(u); }
具体参考 https://www.cnblogs.com/0kk470/p/7555033.html