#include #include #include using namespace std; struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} }; class Solution { public: vector rightSideView(TreeNode* root) { queue que; vector rlt; if(root == 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; } };