注意:
1.边界判断
2.vector插入
vec.insert(vec.begin(),TargetVec.rbegin(),TargetVec.rend());
思路和层序遍历二叉树一样,但是每次遍历一层时判断一下flag
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
if(root == nullptr) return vector<vector<int>>();
vector<vector<int>>res;
queue<TreeNode*>que;
que.push(root);
bool flags = true; //第一个root是正序
while(que.size()){
int size = que.size();
vector<int>tempVec;
for(int i = 0; i < size; i++) {
TreeNode * node = que.front();
que.pop();
tempVec.push_back(node->val);
if(node->left){
que.push(node->left);
}
if(node->right){
que.push(node->right);
}
}
vector<int>vec;
if(flags){
vec = tempVec;
}else{
vec.insert(vec.begin(),tempVec.rbegin(),tempVec.rend());
}
res.push_back(vec);
flags = !flags;
}
return res;
}
};