class Solution {
vector<vector<int>> ans;
queue<TreeNode*> que;
vector<int> tmp;
stack<TreeNode*>sta;
bool flag=true;
int n=0;
public:
vector<vector<int>> levelOrder(TreeNode* root) {
if(root==NULL)
{
return {};
}
que.push(root);
while(!que.empty())
{
n=que.size();
for(int i=0;i<n;i++)
{
TreeNode* node=que.front();
que.pop();
//正常的从左往右打印
if(flag)
{
tmp.push_back(node->val);//直接打印就星
}else//如果要从右往左打印就得先放入栈中
{
sta.push(node);
}
//无论如何,存储顺序不能变,不然会很麻烦
if(node->left!=NULL)que.push(node->left);
if(node->right!=NULL)que.push(node->right);
}
if(!flag)//处理从右往左打印的节点
{
while(!sta.empty())
{
tmp.push_back(sta.top()->val);
sta.pop();
}
}
flag=!flag;//改变条件
ans.push_back(tmp);
tmp.clear();
}
return ans;
}
};
LeetCode中等题:彩灯装饰3
最新推荐文章于 2024-11-13 11:37:20 发布