102. 二叉树的层序遍历
题目:给你一个二叉树,请你返回其按
层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
[
[3],
[9,20],
[15,7]
]
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root)
{
vector<vector<int>> ret;//存放结果的容器
if(!root) return ret;//根节点为空,则直接返回
queue<TreeNode*> q;//存放每一层的节点的值的队列
q.push(root);//根节点先入队
while(!q.empty())
{
//当前队列元素个数,也表示当前层的节点数目
int currNodeSize = q.size();
//空的容器,后面用于存储
ret.push_back(vector<int>());
//遍历当前层中节点个数
for(int i = 1; i <= currNodeSize; i++)
{
TreeNode* node = q.front();
q.pop();
//节点的值存入ret,尾插
ret.back().push_back(node->val);
//节点的左右子树值入队
if(node->left) q.push(node->left);
if(node->right) q.push(node->right);
}
}
return ret;
}
};