链接:103. 二叉树的锯齿形层序遍历 - 力扣(LeetCode)
vector<vector<int>>vec;
if(root==nullptr)return vec;
queue<TreeNode*>que;
que.push(root);
//true代表从左到右
//false代表从右到左
bool flag=true;
while(!que.empty())
{
vector<int>ans;
int size=que.size();
for(int i=0;i<size;i++)
{
TreeNode* cur=que.front();
//ans中的值都是从左到右的元素
ans.push_back(cur->val);
que.pop();
if(cur->left)que.push(cur->left);
if(cur->right)que.push(cur->right);
}
//如果flag为true,那么就是代表的从左到右,那么就把ans放到vec中
if(flag)
{
flag=false;
vec.push_back(ans);
continue;
}
//否则说明就是从右到左
if(!flag)
{
//那么就再定义一个数组ans1来反向获取ans的元素,然后把ans1放到vec中
vector<int>ans1;
for(int i=ans.size()-1;i>=0;i--)ans1.push_back(ans[i]);
vec.push_back(ans1);
flag=true;
}
}
return vec;
思路:其实就是在层次遍历的基础上加上数组的翻转。
标签:ans1,力扣,flag,que,二叉树,ans,push,103,vec From: https://blog.csdn.net/A687479A/article/details/144192127