199. Binary Tree Right Side View
Medium
3852206Add to ListShare
Given the root
of a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.
Example 1:
Input: root = [1,2,3,null,5,null,4] Output: [1,3,4]
Example 2:
Input: root = [1,null,3] Output: [1,3]
Example 3:
Input: root = [] Output: []
Constraints:
- The number of nodes in the tree is in the range
[0, 100]
. -100 <= Node.val <= 100
- 这道题源自102的层次遍历,102是保留每一层的数字,而这里只需要保留每一层最后一个数字就可以.
-
/** * 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==NULL) return {}; // vector<vector<int>> levelbylevel; vector<int> fromright; queue<TreeNode *> q{{root}}; while(!q.empty()){ // vector<int> onelevel; for(int i=q.size(); i>0; i--){ TreeNode *t = q.front(); q.pop(); // onelevel.push_back(t->val); if(i==1) fromright.push_back(t->val); if(t->left) q.push(t->left); if(t->right) q.push(t->right); } // res.push_back(onelevel.back()); } // for(int i=0; i<levelbylevel.size(); i++){ // res.push_back(levelbylevel[i].back()); // } return fromright; } };