本道题来自leetcode102. 二叉树的层序遍历 - 力扣(LeetCode)
题目解释
1.给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
本题思路:可以使用queue和vector来解决
首先将根root入队列,然后将leversize设置为当前队列的长度。
然后出,将队列头数据保存到vector中直到 leversize = 0,就可以将每层数据保存到一个vector<int>中。
然后在出队列的同时,将出队列的节点的左右子树入队列。
然后再将每一层的vector<int>保存到一个vector<vector<int>>中。
直到队列为空,即遍历结束。
代码实现如下
class Solution
{
public:
vector<vector<int>> levelOrder(TreeNode* root)
{
//队列q 用来暂时保存节点
queue<TreeNode*> q;
int leverSize = 0;
//用来返回二维数组
vector<vector<int>> vv;
if(root)
{
q.push(root);
leverSize = 1;
}
while(!q.empty())
{
vector<int> v;
//出队列中leversize长度的节点,保存到v中
//每层出完,vv.push_back(v);
while(leverSize--)
{
TreeNode* front = q.front();
q.pop();
v.push_back(front->val);
//数据入队列
if(front->left)
q.push(front->left);
if(front->right)
q.push(front->right);
}
vv.push_back(v);
leverSize = q.size();
}
return vv;
}
};