题目:
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]
思路:
采用队列进行遍历,把根节点放进队列中 再出队 放入它的左右节点
用一个size 记录出队前队列里的元素个数 (size说明这一层的节点个数)
代码:
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res;
queue<TreeNode*> q;
if(root != nullptr)q.push(root);
while(!q.empty())
{
int size = q.size();
vector<int> tmp;
for(int i = 0; i < size; i++)
{
TreeNode* node = q.front();
q.pop();
tmp.push_back(node -> val);
if(node -> left != nullptr) q.push(node -> left);
if(node -> right != nullptr) q.push(node -> right);
}
res.push_back(tmp);
}
return res;
}
};