其实不用这么麻烦的,每层只放最后一个就行了。
class Solution {
public:
vector<int> rightSideView(TreeNode* root) {
queue<TreeNode*> que;
vector<vector<int>> ans;
vector<int> res;
if(root == nullptr)
return res;
que.push(root);
while(!que.empty()){
vector<int> vec;
int size = que.size();
while(size){
TreeNode * q = que.front();
que.pop();
vec.push_back(q->val);
if(q->left) que.push(q->left);
if(q->right) que.push(q->right);
size--;
}
ans.push_back(vec);
}
for(auto & q:ans){
res.push_back(q.back());
}
return res;
}
};