class Solution {
public:
    vector<int> rightSideView(TreeNode* root) {
        queue<TreeNode *> que;
        vector<int> rlt;
        if(root->left == nullptr && root->right == nullptr){
            return rlt;
        }
        que.push(root);
        while(!que.empty()){
            queue< TreeNode *> tmp_que;
            TreeNode * node;
            while(!que.empty()){
                node = que.front();
                tmp_que.push(node);
                que.pop();
            }
            rlt.push_back(node->val);
            while(!tmp_que.empty()){
                node = tmp_que.front();
                if(node->left != nullptr){
                    que.push(node->left);
                }
                if(node->right != nullptr){
                    que.push(node->right);
                }
                tmp_que.pop();
            }
        }
        return rlt;
    }
};