#3694. 图(存储与遍历)(客观练习 17 题)

图(存储与遍历)(客观练习 17 题)

  1. 使用深度优先搜索(DFS)遍历一个图时,通常使用的辅助数据结构是( )。

{{ select(1) }}

  • 队列
  • 数组
  • 链表
  1. 以下关于广度优先搜索(BFS)的描述,错误的是( )。

{{ select(2) }}

  • BFS 使用队列实现
  • BFS 常用于寻找最短路径
  • BFS 适合搜索所有解空间
  • BFS 一定可以找到最优解
  1. 下列关于树的深度优先搜索(DFS)的说法,正确的是( )。

{{ select(3) }}

  • DFS 一定会访问所有节点
  • DFS 使用队列作为辅助数据结构
  • DFS 在二叉树中通常用递归或栈实现
  • DFS 无法处理有环图
  1. 对于一个有 n 个节点和 n-1 条边的连通图,下列说法正确的是( )。

{{ select(4) }}

  • 它一定是一棵树
  • 它一定不是树
  • 它可能存在环
  • 它可能不连通
  1. 使用二维数组存储图时,为了判断两个顶点之间是否有边,时间复杂度为( )。

{{ select(5) }}

  • O(1)
  • O(n)
  • O(n²)
  • O(log n)
  1. 下列关于深度优先搜索(DFS)和广度优先搜索(BFS)的描述,正确的是( )。

{{ select(6) }}

  • DFS 使用队列,BFS 使用栈
  • DFS 通常用于求最短路径
  • BFS 一定能找到最短路径(无边权情况下)
  • 两者均不能用于有向图
  1. 下列代码中,s1->draw(); 和 s2->draw(); 输出不同结果的主要原因是( )。 class Shape { public: virtual void draw() { cout << "绘制图形" << endl; } }; class Circle : public Shape { public: void draw() override { cout << "绘制圆形" << endl; } }; class Rectangle : public Shape { public: void draw() override { cout << "绘制矩形" << endl; } }; int main() { Shape* s1 = new Circle(); Shape* s2 = new Rectangle(); s1->draw(); s2->draw(); delete s1; delete s2; return 0; }

{{ select(7) }}

  • draw() 是普通成员函数
  • Shape 中的 draw() 被声明为虚函数
  • Circle 和 Rectangle 中使用了 public 继承
  • 指针变量名不同
  1. 对于深度优先搜索和广度优先搜索,下列说法正确的是( )。

{{ select(8) }}

  • DFS 使用队列辅助,BFS 使用栈辅助
  • DFS 和 BFS 都能处理有向图和无向图
  • DFS 总是比 BFS 占用更少内存
  • BFS 一定比 DFS 快
  1. 若要对一个实际问题使用广度优先搜索,往往需要( )。

{{ select(9) }}

  • 使用栈来存储状态
  • 使用优先队列
  • 使用队列来存储状态
  • 使用数组记录所有状态
  1. 关于深度优先搜索(DFS),下列说法正确的有( )。

{{ multiselect(10) }}

  • DFS 可以使用递归实现
  • DFS 使用队列作为辅助数据结构
  • DFS 适合求解最短路径
  • DFS 适合用于寻找所有可行解
  1. 下列哪些数据结构适合用作 BFS 的辅助数据结构?( )

{{ multiselect(11) }}

  • 队列
  • 数组
  • 优先队列
  1. 关于深度优先搜索和广度优先搜索的区别,下列哪些说法是正确的?( )

{{ multiselect(12) }}

  • DFS 使用栈,BFS 使用队列
  • DFS 常用来寻找所有可行解,BFS 常用于寻找最短路径
  • DFS 和 BFS 都能用于图的遍历
  • DFS 一定比 BFS 更快找到解
  1. 关于图的广度优先搜索(BFS),下列说法正确的有( )。

{{ multiselect(13) }}

  • 可以用于求无权图的最短路径
  • 需要使用队列辅助
  • 可以用于判断图的连通性
  • 总是能找到最优解
  1. 在树的深度优先搜索(DFS)中,使用栈作为辅助数据结构可以实现“先进后出”的访问顺序。( )

{{ select(14) }}

  • 正确
  • 错误
  1. 深度优先搜索(DFS)总是比广度优先搜索(BFS)更节省内存。( )

{{ select(15) }}

  • 正确
  • 错误
  1. 在广度优先搜索中,第一次访问到目标节点时一定是在最短路径上的( )

{{ select(16) }}

  • 正确
  • 错误
  1. 使用递归实现 DFS 时,如果树的深度过大,可能会导致栈溢出。( )

{{ select(17) }}

  • 正确
  • 错误