BFS简介
BFS(Breadth First Search):宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。
代码模板
我们利用一个辅助队列来存储每一层的结点。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
vector<int>temp; //存放每一层结点的数组
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int> > ans;
if(!pRoot) return ans;
queue<TreeNode *>q;
q.push(pRoot);
while(!q.empty())
{
int s = q.size();
for(int i = 0;i<s;++i) //开始遍历每一层的结点
{
TreeNode *t = q.front();
q.pop();
if(t->left) q.push(t->left);
if(t->right) q.push(t->right);
temp.push_back(t->val);
}
ans.push_back(temp);
temp.clear(); //把数组清空用于存储下一层结点
}
return ans;
}
};