【前言】
今天是刷题打卡第48天!
早成者未必有成,晚达者未必不达。一起都还来得及,加油哦。
原题: 二叉树的层序遍历(BFS)
原题链接:力扣
示例:
代码执行:
class Solution {
public:
/**
*
* @param root TreeNode*
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
queue<TreeNode*>q;//定义一个队列
if(root)
q.push(root);
vector<vector<int> >ans;//定义一个二维数组用于存放遍历结果
while(!q.empty()){//队列为空时停下来
int n = q.size();//注意哦,n不能放在循环外边,队列中的元素是在变化的
vector<int>tmp;//定义一维数组用于存放每一层的节点(注意一维数组定义的位置)
for(int i = 0;i < n;i++){
TreeNode* t = q.front();//访问队首元素
q.pop();//队首元素出队
tmp.push_back(t->val);//将队首元素的值存放到该层的一维数组中
if(t->left)//左子节点入队
q.push(t->left);
if(t->right)//右子节点入队
q.push(t->right);
}
ans.push_back(tmp);//将第一层的一维数组存放二维数组中
}
return ans;
}
};
结语
今天是刷题打卡第48天!
加油吧少年。