题目
解析
层次遍历改动:根据层数判断是否翻转vector
/**
* 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==nullptr)return res;
int flag = false;
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
vector<int> level;
int size = q.size();
while(size--){
TreeNode *node=q.front();
q.pop();
level.push_back(node->val);
if(node->left!=nullptr)q.push(node->left);
if(node->right!=nullptr)q.push(node->right);
}
if(flag)reverse(level.begin(), level.end());
flag = flag==true?false:true;
res.push_back(level);
}
return res;
}
};