class Solution {
public:
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
vector<vector<int>> vec_vec_int;
queue<TreeNode*> Tree;
bool flag = true;
if(!root) //避免root为空的情况
return vec_vec_int;
Tree.push(root); //从root开始
while(!Tree.empty()){
int n = Tree.size(); //Tree会实时变化,所以要先存入n
deque<int> de_int; //新建一个,存储这一层的值
for(int i = 0; i < n; i++){ //这一层的节点个数
TreeNode* temp = Tree.front();
if(flag)
de_int.push_back(temp -> val); //push_back为正序
else
de_int.push_front(temp -> val); //push_front为逆序
if(temp -> left) //如果左节点存在,放入队列
Tree.push(temp -> left);
if(temp -> right) //如果右节点存在,放入队列
Tree.push(temp -> right);
Tree.pop(); //推出该节点
}
flag = !flag;
vec_vec_int.push_back(vector<int>{de_int.begin(), de_int.end()});
}
return vec_vec_int;
}
};
Accepted
33/33 cases passed (0 ms)
Your runtime beats 100 % of cpp submissions
Your memory usage beats 16.36 % of cpp submissions (12 MB)