C++ DFS与BFS算法实现详解
DFS和BFS是图遍历的基础算法,DFS用递归深入访问,BFS用队列实现层级遍历,均需标记已访问节点避免重复。
DFS和BFS是图遍历的基础算法,DFS用递归深入访问,BFS用队列实现层级遍历,均需标记已访问节点避免重复。

在C++中,深度优先搜索(DFS)和广度优先搜索(BFS)是图或树遍历的两种基础算法。它们常用于解决连通性、路径查找、拓扑排序等问题。下面分别给出基于邻接表存储的无向图的DFS和BFS实现代码。
1. 深度优先搜索(DFS)
DFS使用递归或栈来实现,优先深入访问未访问的邻接节点。
以下是一个用递归实现的DFS示例:
#include#include #include using namespace std; class Graph { int n; vector > adj; public: Graph(int n) : n(n), adj(n) {} void addEdge(int u, int v) { adj[u].push_back(v); adj[v].push_back(u); // 无向图 } void dfs(int start) { unordered_set visited; dfsHelper(start, visited); } private: void dfsHelper(int u, unordered_set & visited) { visited.insert(u); cout << u << " "; for (int v : adj[u]) { if (!visited.count(v)) { dfsHelper(v, visited); } } } }; // 使用示例 int main() { Graph g(5); g.addEdge(0, 1); g.addEdge(0, 2); g.addEdge(1, 3); g.addEdge(2, 4); cout << "DFS traversal: "; g.dfs(0); cout << endl; return 0; }
2. 广度优先搜索(BFS)
BFS使用队列实现,逐层访问相邻节点,适合求最短路径。
#include关键点说明:#include #include #include using namespace std; class Graph { int n; vector > adj; public: Graph(int n) : n(n), adj(n) {} void addEdge(int u, int v) { adj[u].push_back(v); adj[v].push_back(u); } void bfs(int start) { unordered_set visited; queue q; visited.insert(start); q.push(start); while (!q.empty()) { int u = q.front(); q.pop(); cout << u << " "; for (int v : adj[u]) { if (!visited.count(v)) { visited.insert(v); q.push(v); } } } } }; // 使用示例 int main() { Graph g(5); g.addEdge(0, 1); g.addEdge(0, 2); g.addEdge(1, 3); g.addEdge(2, 4); cout << "BFS traversal: "; g.bfs(0); cout << endl; return 0; }
- 图使用 vector
> 存储邻接表,适合稀疏图。 - DFS用递归实现更简洁,注意标记已访问节点避免重复。
- BFS必须使用队列,确保按层次访问。
- 使用 unordered_set 记录访问状态,效率较高。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。













