剑指offer-59:按之字形顺序打印二叉树
在把二叉树打印成多行题目上进行修改,添加bool变量zigzag,当奇数行时,从左向右打印,偶数行时进行reverse反转,具体代码如下:
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int>> res;
if(!pRoot) return res;
queue<TreeNode*> q;
q.push(pRoot);
q.push(nullptr);
vector<int> cur;
bool zigzag = false; //opps
while(q.size()){
auto p = q.front();
q.pop();
if(p){
cur.push_back(p->val);
if(p->left) q.push(p->left);
if(p->right) q.push(p->right);
}
else{
if(q.size()) q.push(nullptr);
if(zigzag) reverse(cur.begin(), cur.end()); //opps
res.push_back(cur);
cur.clear();
zigzag = !zigzag;
}
}
return res;
}
};