BFS

应用场景

一般用来解决最短连通路径问题。

基本思路

单源BFS:借助Queue,将源点存进Queue,然后每次从Queue的头取一个元素,将所有 unvisited neighbors加到Queue尾,依次进行,直到Queue空。

Typical BFS 写法

Queue q;
Set visited;
q.add(node);

while(q is not empty) {
    Node cur = q.poll();
    for(Node neighbor: cur.neighbors) {
        if(neighbor is not visited) {
            q.add(neighbor);
        }
    }
}

多源BFS:单源BFS的升级版。会大大减少时间复杂度。前提是,每个源的地位都是一样的。做法跟单源的类似,只不过要先把所有源存进Queue。

经典题目

323 Number of Connected Components in an Undirected Graph

675. Cut Off Trees for Golf Event

863. All Nodes Distance K in Binary Tree

Last updated