题目:
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。
(即逐层地,从左到右访问所有节点)。

题解思路:
方法一: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;
}
};

本文介绍了一种使用BFS算法实现的二叉树层序遍历方法,通过队列辅助存储每层节点,实现了从上到下、从左到右的遍历顺序,适用于需要按层次访问二叉树节点的场景。
433

被折叠的 条评论
为什么被折叠?



