给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
思路:
BFS算法,使用队列。层序遍历的一般写法,通过一个 while 循环控制从上向下一层层遍历,for 循环控制每一层从左向右遍历:
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
if (!root) return res;
queue<TreeNode*> q;
q.push(root);
while (!q.empty())
{
vector<int> tmp;
int len = q.size();
for (int i = 0; i < len; i++)
{
TreeNode* cur = q.front();
q.pop();
tmp.push_back(cur->val);
if (cur->left) q.push(cur->left);
if (cur->right) q.push(cur->right);
}
res.push_back(tmp);
}
return res;
}
};