当前位置: 首页 > news >正文

深度优先遍历DFS:从入门到精通

一、先解答上次的思考题

无向图:顶点 0-1-2-3,边:0-1、0-2、1-2、2-3

  • 邻接矩阵:对应位置置 1
  • 邻接表:每个顶点链表列出邻居

二、今天学习目标

  1. 理解DFS 深度优先遍历
  2. 记住核心思想:一条路走到黑,走不通再回头
  3. 邻接矩阵 + 递归实现 DFS
  4. 完整可运行代码

三、什么是 DFS?

DFS:Depth First Search深度优先,先走到底,再回溯

可以理解为:

  • 走迷宫:一直往前,遇到岔路选一条,走不通就退回来换一条
  • 树的前序遍历,就是 DFS 的一种

关键点:

  • 需要visited 数组标记是否走过
  • 一般用递归最简单

四、DFS 基本步骤

  1. 访问当前节点,标记visited[u] = 1
  2. 遍历所有邻居v
  3. 如果v没被访问,递归 DFS (v)

五、完整代码:邻接矩阵 + DFS

#include <stdio.h> #define N 5 // 邻接矩阵 int graph[N][N] = {0}; // 访问标记 int visited[N] = {0}; // 添加无向边 void addEdge(int u, int v) { graph[u][v] = 1; graph[v][u] = 1; } // DFS 核心 void dfs(int u) { // 访问当前节点 printf("%d ", u); visited[u] = 1; // 遍历所有可能邻居 for (int v = 0; v < N; v++) { // 有边且未访问 if (graph[u][v] == 1 && !visited[v]) { dfs(v); } } } int main() { // 构建图 addEdge(0, 1); addEdge(0, 2); addEdge(1, 3); addEdge(1, 4); addEdge(3, 4); printf("DFS 遍历顺序:"); dfs(0); return 0; }

六、运行结果示例

DFS 遍历顺序:0 1 3 4 2

(具体顺序可能因邻接矩阵遍历顺序略有不同,均属正确)


七、DFS 适用场景

  • 连通性判断
  • 迷宫求解
  • 寻找路径
  • 拓扑排序
  • 求连通块数量

八、今日小练习

图:顶点:0 1 2 3边:0-1,0-2,1-2,2-3

从 0 开始 DFS,写出遍历顺序。

http://www.cnnetsun.cn/news/1897500.html

相关文章:

  • 当你的 Agent 需要记住三个月前的对话
  • 从0手把手教你写AI Skill(附规范目录+可运行代码)
  • OSI模型下的数据封装全流程
  • 梯度下降理解
  • 【AIAgent可靠性黄金法则】:SITS2026权威发布的5大不可妥协要素(20年架构师亲验)
  • 全文降AI率保姆级攻略:用嘎嘎降AI从60%降到5%
  • 【权威认证】基于17家头部AI实验室联合验证的多模态数据构建框架:支持动态模态权重分配的6层过滤引擎
  • 提升企业知识使用率的运营活动设计指南
  • 构建现代化Vue应用界面:Shadcn-Vue组件化架构设计与实践指南
  • Wazuh OVA镜像部署实战:从零搭建开源XDR-SIEM一体化平台
  • 容器网络方案
  • KEBA DI325数字输入模块卡
  • 告别繁琐!OpenClaw Windows 可视化一键部署安装教程
  • 前端文件上传新方法:别再用传统表单了
  • QT5.12 + libmodbus RTU实战:用多线程解决界面卡顿,打造流畅的Modbus主机程序
  • NHS英格兰斥资4.6万英镑为下一轮微软许可证谈判做准备
  • 1.【UPF】Fundamentals of Low Power Design(低功耗设计基础)
  • Kotlin密封类实战指南:如何优雅地处理受限类层次结构
  • 绿色机器学习系统综述:(四)讨论、未来方向与结论
  • 告别复杂配置!Qwen2.5-7B微调镜像开箱即用,10分钟上手实战
  • 番茄小说下载器:离线阅读的完整解决方案
  • SITS2026跨模态检索实战手册(2024Q3最新基准测试实录)
  • Z-Image-Turbo-rinaiqiao-huiyewunv在同人创作中的落地:辉夜大小姐多姿态写真生成
  • 手把手教你解决Realsense D455在ROS下IMU数据不输出的问题(附固件降级指南)
  • 电商多模态搜索工程化落地全复盘(SITS2026内部技术解密)
  • 西门子S7-1200博图程序案例:PID恒温恒压供冷却水程序 - 触摸屏TP1200组态与霍尼...
  • # 发散创新:基于Rust的内存安全防御机制实战解析在现代软件开发中,**内存安全漏洞**(如缓冲区溢出
  • Qwen3-VL-4B Pro API调用详解:图片转base64、构造请求、解析响应,三步搞定
  • 2026年大模型Agent面试必看!5种Agent模式项目,让你在卷王市场中脱颖而出!
  • 芯洲SCT SCT2360FPBR QFN-12 DC-DC电源芯片