二叉树的层序遍历
用队列和数组辅助
class Solution
{
public:
vector<vector<int>> levelOrder(TreeNode* root)
{
vector<vector<int>> ret={};
if(root==NULL)
{
return ret;
}
queue<TreeNode*> que;//队列,存每层的节点
que.push(root);//根节点入队
while(!que.empty())
{
//获取每层的数量
int nSize=que.size();
ret.push_back(vector<int>());
for(int i=0;i<nSize;i++)
{
//队的先入先出特性
TreeNode* pNode=que.front();
que.pop();
ret.back().push_back(pNode->val);
//左右子树入队
if(pNode->left)
{
que.push(pNode->left);
}
if(pNode->right)
{
que.push(pNode->right);
}
}
}
return ret;
}
};