广度优先搜索算法(Breadth-First-Search,BFS)
BFS(GRAPH G, NODE I):
主要分为三步:1. 节点出队;2. visit 该节点;3. 节点入队。
定义一个数组 visited ,布尔型变量,保存节点的 访问情况;
定义一个队列 Queue,记录当前已访问过、但是其邻接点未访问的节点。
单源最短路径问题:在原代码的基础上,加一个记录路径长度的变量。
深度优先搜索算法(Depth-First-Search,DFS)
DFS(GRAPH G, NODE I):
使用递归来实现,当访问到一个节点之后,递归调用DFS函数,递归访问其邻接点;
DFS: 先将某个邻节点访问之后,递归调用DFS函数,递归访问该邻接点的邻接点。
BFS: 先将某个邻节点访问之后,压入队列,以后再访问其邻接点。
TopK问题
先取k个元素构建最小堆,然后将剩余的N-k个元素与对顶元素比较,将更大的元素与堆顶元素交换,重新调整最小堆。
如此反复,直到与剩余的N-k个元素全部比较完。