/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */classSolution {public:vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector<vector<int>> res;if(!root) return res; vector<TreeNode*> cur; vector<TreeNode*> next;cur.push_back(root);int level =0;while(!cur.empty()) { vector<int> tmp;for (vector<TreeNode*>::iterator it =cur.begin() ; it !=cur.end(); ++it) {if((*it)->left) next.push_back((*it)->left);if((*it)->right) next.push_back((*it)->right);tmp.push_back((*it)->val); }if(level%2==1) {reverse(tmp.begin(),tmp.end()); }res.push_back(tmp); level++; cur = next;next.clear(); }return res; }};// idea: when in even level, output normally; when in odd level, reverse before push to ans
Runtime: 4 ms, faster than 88.61% of C++ online submissions for Binary Tree Zigzag Level Order Traversal. Memory Usage: 13.4 MB, less than 92.60% of C++ online submissions for Binary Tree Zigzag Level Order Traversal.
Runtime: 4 ms, faster than 88.61% of C++ online submissions for Binary Tree Zigzag Level Order Traversal. Memory Usage: 13.3 MB, less than 98.21% of C++ online submissions for Binary Tree Zigzag Level Order Traversal.