用栈和队列实现BFS和DFS算法
1.BFS(宽度优先遍历)
1、从顶点v出发遍历图G的算法描述如下:
①访问V0
②假设最近一层的访问顶点依次为v1v2v3vk则依次访问v1,v2,v3…vk的未被访问的邻接点
③重复②知道没有未被访问的邻接点为止
2、心得:bfs算法其实就是一种层次遍历算法。从算法描述可以看到该算法要用到队列这一数据结构。
Set集合的作用是用来判断当前节点是不是已经访问过,加到队列中去了,避免重复添加。
3、算法代码:
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;
public class Code_01_BFS {
public static void bfs(Node node) {
if (node == null) {
return;
}
Queue<Node> queue = new LinkedList<>();
HashSet<Node> map = new HashSet