图的存储和遍历算法,下面说法错误的是( )。
分析时间复杂度时关注循环层数和每层迭代次数,递归算法则分析递归树。注意最坏/最好/平均情况的区别。
分析复杂度时注意外层循环和内层循环的关联。例如内外两层都到n的循环不一定是O(n²),要看内层是否每次都在缩小。
【考点】图的存储结构|深度优先遍历|广度优先遍历
🎯 考纲定位:本题在《GESP C++ 考试大纲》七级算法模块,属于图论基础中的存储与遍历。命题人想看你是否分清 DFS 用栈、BFS 用队列,这是七级图论的核心考点。
🧠 解题思维:DFS 基于栈(或递归)实现,BFS 基于队列实现。选项 A 混淆了两者数据结构,是典型错误。B、C、D 均符合图论基本定义,无需过多思考。
🪤 陷阱拆解:DFS 的核心是回溯,用栈(或递归)保证后进先出;BFS 用队列保证先进先出。选项 A 把 BFS 的队列套到 DFS 上,是混淆数据结构用途。选项 C 遍历 v²个格子,O(v²) 正确。选项 D 边数不变,只是方向改变,结点个数相同。
🔄 反命题思维:若将 DFS 改为用队列实现,则算法逻辑变为 BFS。若改用邻接表,统计边数复杂度降为 O(v)。若考无向图,出入边表结点个数会翻倍。