BFS-Breadth First Search-广度优先搜索
广度优先搜索(Breadth First Search)又叫宽度优先搜索或层次优先搜索或横向优先搜索,从根结点开始沿着树的宽度搜索,可以利用队列实现BFS。
Ex:BFS遍历是ABCDEF
我们可以用队列来实现它,队列-先进先出(first in first out),C++有队列的模版库。
Ex:
queue<int> q;
//队首:先进元素 队尾:后进元素
q.empty(); //如果队列为空返回true,否则返回false
q.size(); //返回队列中的元素的个数
q.pop(); //删除队列首元素但不返回其值
q.front(); //返回队首元素的值,但不删除该元素
q.push(); //在队尾压入新元素
q.back(); //返回队尾元素的值,但不删除该元素
Code:
void BFS(TreeNode* root)
{
queue<TreeNode*> q;
q.push(root);
while(!q.empty())
{
TreeNode* temp=q.front();
cout<<temp->val<<' ';
q.pop();
if(temp->left!=NULL)
q.push(temp->left);
if(temp->right!=NULL)
q.push(temp->right);
}
}