题目链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/description/
class Solution {
public:
vector<vector<int>> zigzagLevelOrder(TreeNode* root)
{
//与层次遍历思路相同,只需设置深度的奇偶标志,二叉树深度为偶数时反转
vector<vector<int>> ret;
vector<int> level;
int count = 0;
if(root == NULL)
return ret;
queue<TreeNode*> q;
q.push(root);
q.push(NULL);
while(!q.empty())
{
TreeNode* temp = q.front();
q.pop();
if(temp != NULL)
{
level.push_back(temp->val);
if(temp->left)
q.push(temp->left);
if(temp->right)
q.push(temp->right);
}
else
{
count += 1;
if(count % 2 != 0)
ret.push_back(level);
else
{
reverse(level.begin(), level.end());
ret.push_back(level);
}
if(!q.empty())
{
level.clear();
q.push(NULL);
}
}
}
return ret;
}
};