描述
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
该二叉树层序遍历的结果是
[
[3],
[9,20],
[15,7]
]
数据范围:二叉树的节点数满足 1≤n≤105 1 \le n \le 10^5 \ 1≤n≤105
示例1
输入:
{1,2}
返回值:
[[1],[2]]
示例2
输入:
{1,2,3,4,#,#,5}
返回值:
[[1],[2,3],[4,5]]
解析:
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
// write code here
vector<vector<int>> res;//创建二维数组
if(root == NULL)//唯恐不遍历
{
return res;
}
queue<TreeNode*> q;//创建队列
q.push(root);//根节点入队
TreeNode* cur;
while(!q.empty())//队列不为空
{
vector<int> row;//记录二叉树的每一行
int n = q.size();//记录队列的长度
for(int i=0;i<n;i++)//队列有多长,每层的节点就有多少
{
cur = q.front();//队列头元素
q.pop();//出队
row.push_back(cur->val);//存入记录本行的数组里
if(cur->left)//继续往下一层走
{
q.push(cur->left);
}
if(cur->right)
{
q.push(cur->right);
}
}
res.push_back(row);//将记录行的数组,存入res这个二维数组里
}
return res;//得到最终结果
}
};