题目描述
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
但是要这样返回
root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
也就是需要把是哪一层都标出来
思路
使用一个队列(先入先出),每次循环取出上面一整层,然后存放下面一整层,也就是嵌套一个循环,广度优先搜索,
vector<vector<int> > levelOrder(TreeNode* root)
{
vector<vector<int> > ans = {};
if(!root) return ans;
queue<TreeNode*> q;
q.push(root); // 存放root
while(q.size()!=0)
{
int k = q.size(); // 这一层的size
vector<int> temp = {};
for(int i = 0; i<k; i++) // 取出一层的
{
TreeNode* node = q.front();
temp.push_back(node->val);
q.pop();
if(node->left) q.push(node->left); // 注意这里的判断if
if(node->right) q.push(node->right);
}
ans.push_back(temp);
}
return ans;
}