770 字
2 分钟
考研专业课学习记录2026-07-06
考研专业课学习记录 | 2026-07-06
今日学习内容
今日累计花费1小时专注复习考研408数据结构模块内容,核心任务为背诵并理解深度优先搜索(DFS)的两种主流实现代码,包括递归版与非递归版,同时梳理了DFS对应的考研考点框架。
AI知识点带复盘
核心考点梳理
深度优先搜索(DFS)是408数据结构模块中图遍历的核心考点之一,同时也可应用于树的遍历、连通分量求解、拓扑排序、迷宫路径查找等场景,常见考察形式包括代码默写、时间复杂度计算、场景应用分析:
- 递归版DFS实现原理
递归实现基于程序运行时的系统调用栈,每次访问一个节点后,会递归遍历其所有未被访问的邻接点,直到所有可达节点都被访问完毕。标准邻接表存储下的递归代码框架如下:
// 假设MAXVEX为最大顶点数,Graph为邻接表存储的图结构体bool visited[MAXVEX]; // 全局访问标记数组void DFS(Graph G, int v) {// 访问当前顶点vprintf("%d ", G.vertices[v].data);visited[v] = true;// 遍历v的所有邻接点wfor (int w = FirstNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w)) {if (!visited[w]) {DFS(G, w); // 递归访问未被访问的邻接点}}}
- 非递归版DFS实现思路 手动模拟系统栈的工作流程:将起始顶点压入栈并标记访问,循环弹出栈顶顶点并访问,再将其所有未被访问的邻接点按逆序压入栈(保证与递归遍历顺序一致),直到栈为空。
- 时间复杂度分析
- 邻接表存储:每个顶点和边都被访问一次,时间复杂度为 ,其中为顶点数,为边数
- 邻接矩阵存储:需要遍历每个顶点的所有邻接矩阵元素,时间复杂度为
- 常见考察变式 408真题常结合无向图连通分量求解、有向图环检测、拓扑排序等场景考察DFS的应用,同时会对比DFS与BFS的空间、时间复杂度差异。
问题与反思
今日背诵过程中发现两个易错点:一是对邻接表存储下的FirstNeighbor、NextNeighbor辅助函数的调用逻辑记忆模糊,容易在循环遍历邻接点时出现边界错误;二是递归版DFS中visited数组的初始化容易遗漏,导致出现重复访问节点的问题,后续需要结合图的遍历流程强化记忆。
收获与总结
- 熟练掌握了DFS递归版代码的核心结构,明确了访问标记数组的作用与递归调用的底层逻辑
- 梳理了DFS在408考试中的核心考点范围,理清了不同存储结构下的时间复杂度差异
- 意识到需要结合图的存储结构来理解DFS的遍历过程,后续需要补充练习非递归版DFS的代码实现
💡 碎碎念:踏实吃透每一个知识点!
文档内容由 AI 辅助生成
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
考研专业课学习记录2026-07-06
https://elysiaweb.vercel.app/posts/408/7-6/ 部分信息可能已经过时
相关文章 智能推荐