广度优先搜索时,一定需要用到的数据结构是( )
这题考的是图遍历核心数据结构。拿到题先想BFS的‘层次’特性:必须按访问顺序依次扩展,所以得用FIFO的队列存待访问点,选C。
容易把BFS和DFS搞混,误选栈;或者觉得二叉树是BFS遍历对象,误选二叉树;还有人把哈希表当‘访问标记’就以为它也是BFS必需,其实哈希表只是辅助,BFS真正离不开的是队列。
这题考查广度优先搜索(BFS)的核心数据结构。BFS按层次遍历图:从起点开始,先访问距离起点最近的所有点(第1层),再访问次近的(第2层),依此类推。要实现这种“先访问的先扩展”的规律,必须用遵循先进先出(FIFO)原则的队列来存储待访问的顶点。
命题人喜欢把BFS和DFS的核心结构放在一起考,让你区分FIFO和LIFO;还会用“二叉树”这种BFS的常见对象来干扰,让你误以为二叉树是BFS必需的数据结构;偶尔也拿哈希表做“访问标记”来混淆,其实哈希表只是辅助,BFS真正离不开的是队列。