/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param root TreeNode类 * @return int整型vector<vector<>> */ vector<vector<int>> zigzagLevelOrder(TreeNode* root) { // write code here vector<vector<int>> res; if(!root) return res; stack<TreeNode*> s1,s2; vector<int> vec; s1.push(root); while(!s1.empty() || !s2.empty()){ while(!s1.empty()){ TreeNode * node=s1.top(); s1.pop(); vec.push_back(node->val); if(node->left) s2.push(node->left); if(node->right) s2.push(node->right); } if(!vec.empty()){ res.push_back(vec); vec.clear(); } while(!s2.empty()){ TreeNode * node=s2.top(); s2.pop(); vec.push_back(node->val); if(node->right) s1.push(node->right); if(node->left) s1.push(node->left); } if(!vec.empty()){ res.push_back(vec); vec.clear(); } } return res; } };