這道題沒啥好說的,首先定義一個向量來保存每一層的最后一個元素,直接用層序遍歷(廣度優先搜索)遍歷二叉樹,然后將每一層的最后一個元素加入到這個向量中即可。屬于是二叉樹層序遍歷的模板題。
/*** 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;}
};