BFS、DFS、TopK

本文深入解析了广度优先搜索(BFS)与深度优先搜索(DFS)算法的原理及应用,对比了两种算法的特点,并介绍了如何利用BFS解决单源最短路径问题,以及DFS的递归实现方式。此外,还探讨了TopK问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

广度优先搜索算法(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个元素全部比较完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值