题目如下
数据范围
从根节点开始的每一层有几种情况:
如果这一层只有1个节点那么显然我们可以看到这个节点。
如果这一层用于1个以上的节点那么一定是最右侧的节点才能被看到。
综上所述我们使用层序遍历在输出的时候判断就行。
通过代码
/*** Definition for a binary tree node.* 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<int> rightSideView(TreeNode* root) {if(root == nullptr)return {};vector<int> ans;queue<TreeNode*> q;int n = 1, t = 0;TreeNode* s;q.push(root);while (!q.empty()) {if(n == 1){ans.push_back(q.front()->val);}for (int i = 0; i < n; i++) {s = q.front();q.pop();if (s->left != nullptr) {q.push(s->left);t++;}if (s->right != nullptr) {q.push(s->right);t++;}}if(n != 1){ans.push_back(s->val);}n = t;t = 0;}return ans;}
};