Made a stupid bug....... When reverse the vector, stop it at mid. Otherwise, it will swap back......
Mark!!!!!!!!
1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */10 class Solution {11 public:12 vector> zigzagLevelOrder(TreeNode *root) {13 vector > result;14 vector level;15 if (!root) return result;16 int current = 1, future = 0;17 bool flag = false;18 queue q;19 q.push(root);20 auto func = [](int &a, int &b) { int t = a; a = b; b = t;};21 while (!q.empty()) {22 TreeNode *tmp = q.front();23 q.pop(), current--;24 if (tmp->left) {25 q.push(tmp->left);26 future++;27 }28 if (tmp->right) {29 q.push(tmp->right);30 future++;31 }32 level.push_back(tmp->val);33 if (!current) {34 if (flag) {35 for (int i = 0; i < level.size()/2; i++) {36 func(level[i], level[level.size()-i-1]);37 }38 }39 flag ^= 1;40 result.push_back(level);41 level.clear();42 current = future;43 future = 0;44 }45 }46 return result;47 }48 };