BFS(广度优先搜索)
适用场景
- 树的层序遍历
- 图的广度优先遍历
- 最短路问题(无权图)
- “一层一层扩散”的问题
基本思想:按层扩展
- 起点入队
queue<int> q1.push() - 队列非空时循环
while(!qi.empty()) - 取出队头
vector<int> v1.push_back(q1.front()) - 处理当前节点
TreeNode *node - 把它的相邻节点加入队列
q1.push(node→left) and q1.push(node→right) if node→left≠nullptr || node →right ≠nullptr
⚠️ BFS不能使用递归来实现,通常借助“队列”来实现。队列遵循“先进先出”的规则,而广度优先遍历则遵循“逐层推进”的规则,两者背后的思想是一致的