题目:
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。
(即逐层地,从左到右访问所有节点)。
题解思路:
方法一:BFS+引入二维数组+一维数组
1.申请一个queue,利用先进先出的特性,把头结点放进去。如果左右结点不为空就放入队列中。
2.一维数组用来存二叉树一层的元素的值,二维数组用来存一维数组。
函数代码:
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>>res;
if(!root)
{
return res;
}
queue<TreeNode *>q;
q.push(root);
while(!q.empty())
{
int len=q.size();
vector<int>ans;
while(len)
{
TreeNode *p=q.front();
q.pop();
ans.push_back(p->val);
if(p->left)
{
q.push(p->left);
}
if(p->right)
{
q.push(p->right);
}
len--;
}
if(ans.size()!=0)
{
res.push_back(ans);
}
}
return res;
}
};
函数代码二:
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>>res;
if(!root)
{
return res;
}
queue<TreeNode *>q;
q.push(root);
while(!q.empty())
{
int len=q.size();
res.push_back(vector <int> ());
while(len)
{
TreeNode *p=q.front();
q.pop();
res.back().push_back(p->val);
if(p->left)
{
q.push(p->left);
}
if(p->right)
{
q.push(p->right);
}
len--;
}
}
return res;
}
};