1. 用队列实现二叉树层次遍历。
  2. 同时设置一个flag标记, 来判断二叉树该一层节点的值是否翻转。
  3. 用stl中reverse函数翻转vector数组
  4. 使用异或, 实现flag一次是0,一次是1,来回变化。
    ```
    class Solution {
    public:
    vector<vector<int> > zigzagLevelOrder(TreeNode* root) {
     vector<vector<int> > ans;
     if(!root) return ans;
     queue<treenode*> q;
     q.push(root);
     int flag = 0; // 初始化为0,第一层不翻转
     while(!q.empty()){
         int size = q.size();
         vector<int> tmp;
         while(size--){
             TreeNode *r = q.front();
             q.pop();
             tmp.push_back(r->val);
             if(r->left) q.push(r->left);
             if(r->right) q.push(r->right);
         }
         if(flag) reverse(tmp.begin(), tmp.end());
         ans.push_back(tmp);
         flag = flag^1; // 使flag 0,1变化。
     }
     return ans;
    }
    };
    ```</int></treenode*></vector<int></vector</int>