图
查找
伪代码描述
实现
//图的遍历只需要从某个节点开始,这个节点仅需要它自身的value和它的邻接节点即可
import java.util.ArrayList;
//值,入度出度,点集边集
public class Node {
public int value;
public ArrayList<Node> nexts;
public Node(int value) {
nexts = new ArrayList<>();
}
}
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;
public class BFS {
public static void bfs(Node node) {
if (node == null) {
return;
}
Queue<Node> queue = new LinkedList<Node>();//借助队列实现层次遍历
HashSet<Node> map = new HashSet<Node>();//这个set起记录的作用,已经进入过队列的元素不会再进入
queue.add(node);
map.add(node);
while (!queue.isEmpty()) {
Node cur = queue.poll();
System.out.println(cur.value);//拿到队头元素就打印
for (Node next : cur.nexts) {
if (!map.contains(next)) {
map.add(next);
queue.add(next);
}
}
}
}
}