题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
代码:
class Solution {
public:
vector<vector<int> > Print(TreeNode* root) {
vector<vector<int> >ans;
if(root==NULL)return ans;
int flag=1;//标志奇偶行
queue<TreeNode*>q;
q.push(root);
while(!q.empty()){
queue<TreeNode*>qt;
vector<int>res;
while(!q.empty()){
TreeNode*t=q.front();q.pop();
res.push_back(t->val);
if(t->left)qt.push(t->left);
if(t->right)qt.push(t->right);
}
if(flag<0){//偶数行逆置
int len=res.size();
for(int i=0;i<len/2;i++)
swap(res[i],res[len-1-i]);
}
ans.push_back(res);
flag=-flag;
q=qt;
}
return ans;
}
};