class Solution {
public:
vector<vector<int> > zigzagLevelOrder(TreeNode *root) {
vector<vector<int>> res;
vector<int> oneRes;
if(root==NULL)
return res;
queue<TreeNode*> queue;
queue.push(root);
int level=0,curCnt=0,nextCnt=1;
while(!queue.empty())
{
level++;
curCnt=nextCnt;
nextCnt=0;
while(curCnt>0){
TreeNode *temp=queue.front();
queue.pop();
curCnt--;
oneRes.push_back(temp->val);
if(temp->left){
queue.push(temp->left);
nextCnt++;
}
if(temp->right){
queue.push(temp->right);
nextCnt++;
}
}
if(level%2==0)
reverse(oneRes.begin(),oneRes.end());
res.push_back(oneRes);
oneRes.clear();
}
return res;
}
};
public:
vector<vector<int> > zigzagLevelOrder(TreeNode *root) {
vector<vector<int>> res;
vector<int> oneRes;
if(root==NULL)
return res;
queue<TreeNode*> queue;
queue.push(root);
int level=0,curCnt=0,nextCnt=1;
while(!queue.empty())
{
level++;
curCnt=nextCnt;
nextCnt=0;
while(curCnt>0){
TreeNode *temp=queue.front();
queue.pop();
curCnt--;
oneRes.push_back(temp->val);
if(temp->left){
queue.push(temp->left);
nextCnt++;
}
if(temp->right){
queue.push(temp->right);
nextCnt++;
}
}
if(level%2==0)
reverse(oneRes.begin(),oneRes.end());
res.push_back(oneRes);
oneRes.clear();
}
return res;
}
};