这道题没啥好说的,首先定义一个向量来保存每一层的最后一个元素,直接用层序遍历(广度优先搜索)遍历二叉树,然后将每一层的最后一个元素加入到这个向量中即可。属于是二叉树层序遍历的模板题。
/*** 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) {//本题采用层序遍历vector<int> result; //记录最终的返回结果queue<TreeNode*> My_Queue; //存放每一层的元素if(root) My_Queue.push(root);while(!My_Queue.empty()){int size = My_Queue.size();while(size > 0){TreeNode* node = My_Queue.front(); //取出队头元素My_Queue.pop();if(--size == 0) result.emplace_back(node -> val);if(node -> left) My_Queue.push(node -> left);if(node -> right) My_Queue.push(node -> right);}}return result;}
};