class Solution {
public:
vector<int> levelOrder(TreeNode* root) {
if(!root) return {}; //如果节点为空放回空容器
queue<TreeNode*> data; //定义一个队列
TreeNode* p=root; //新增一个节点将头节点赋值给他
TreeNode* s;
vector<int> x; //定义一个容器用于存储树中结点的值
data.push(p); //头节点入队
while(!data.empty()) //如果队列为空跳出循环
{
s=data.front(); //将队头元素赋给s
x.push_back(s->val); //将s的值压入x中
data.pop(); //头节点出队
if(s->left!=NULL) //如果s的左子树不为空将左子树节点入队,永远都将队头元素的左右子树入队
{
data.push(s->left);
}
if(s->right!=NULL) //如果s的右子树不为空将右子树节点入队
{
data.push(s->right);
}
}
return x;
}
};
根节点入队
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
queue<TreeNode*> data;
vector<vector<int>> x;
if(root==NULL) return x;
data.push(root);
TreeNode* s;
while(!data.empty())
{
vector<int> temp;
int size=data.size();
for(;size--;data.pop())
{
s=data.front();
if(s->left) data.push(s->left);
if(s->right) data.push(s->right);
temp.push_back(s->val);
}
x.push_back(temp);
}
return x;
}
};