770 字
2 分钟
考研专业课学习记录2026-07-06
2026-07-06

考研专业课学习记录 | 2026-07-06#

今日学习内容#

今日累计花费1小时专注复习考研408数据结构模块内容,核心任务为背诵并理解深度优先搜索(DFS)的两种主流实现代码,包括递归版与非递归版,同时梳理了DFS对应的考研考点框架。

AI知识点带复盘#

核心考点梳理#

深度优先搜索(DFS)是408数据结构模块中图遍历的核心考点之一,同时也可应用于树的遍历、连通分量求解、拓扑排序、迷宫路径查找等场景,常见考察形式包括代码默写、时间复杂度计算、场景应用分析:

  1. 递归版DFS实现原理 递归实现基于程序运行时的系统调用栈,每次访问一个节点后,会递归遍历其所有未被访问的邻接点,直到所有可达节点都被访问完毕。标准邻接表存储下的递归代码框架如下:
    // 假设MAXVEX为最大顶点数,Graph为邻接表存储的图结构体
    bool visited[MAXVEX]; // 全局访问标记数组
    void DFS(Graph G, int v) {
    // 访问当前顶点v
    printf("%d ", G.vertices[v].data);
    visited[v] = true;
    // 遍历v的所有邻接点w
    for (int w = FirstNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w)) {
    if (!visited[w]) {
    DFS(G, w); // 递归访问未被访问的邻接点
    }
    }
    }
  2. 非递归版DFS实现思路 手动模拟系统栈的工作流程:将起始顶点压入栈并标记访问,循环弹出栈顶顶点并访问,再将其所有未被访问的邻接点按逆序压入栈(保证与递归遍历顺序一致),直到栈为空。
  3. 时间复杂度分析
    • 邻接表存储:每个顶点和边都被访问一次,时间复杂度为 O(V+E)O(V+E),其中VV为顶点数,EE为边数
    • 邻接矩阵存储:需要遍历每个顶点的所有邻接矩阵元素,时间复杂度为 O(V2)O(V^2)
  4. 常见考察变式 408真题常结合无向图连通分量求解、有向图环检测、拓扑排序等场景考察DFS的应用,同时会对比DFS与BFS的空间、时间复杂度差异。

问题与反思#

今日背诵过程中发现两个易错点:一是对邻接表存储下的FirstNeighborNextNeighbor辅助函数的调用逻辑记忆模糊,容易在循环遍历邻接点时出现边界错误;二是递归版DFS中visited数组的初始化容易遗漏,导致出现重复访问节点的问题,后续需要结合图的遍历流程强化记忆。

收获与总结#

  1. 熟练掌握了DFS递归版代码的核心结构,明确了访问标记数组的作用与递归调用的底层逻辑
  2. 梳理了DFS在408考试中的核心考点范围,理清了不同存储结构下的时间复杂度差异
  3. 意识到需要结合图的存储结构来理解DFS的遍历过程,后续需要补充练习非递归版DFS的代码实现

💡 碎碎念:踏实吃透每一个知识点!

文档内容由 AI 辅助生成

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

考研专业课学习记录2026-07-06
https://elysiaweb.vercel.app/posts/408/7-6/
作者
程翊雪
发布于
2026-07-06
许可协议
Unlicensed

部分信息可能已经过时

目录