给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
C++ 版本
/** * 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> ans; //存放节点 queue<TreeNode*> que; if(root) que.push(root); while(!que.empty()) { int size = que.size(); // 这个size很关键 for(int i=0;i<size;i++) { TreeNode* node = que.front(); que.pop(); if(i==size-1) { ans.push_back(node->val); // 保存答案 } if(node->left) que.push(node->left); if(node->right) que.push(node->right); } } for(int i=0;i<ans.size();i++) { cout<<ans[i]; } return ans; } };