1 题目描述
题目链接:二叉树的右视图
2 题目解析
思路:
可以运用 层序遍历, 将每一层的结点值存入到vector< int >中,然后对每一层的vector,将vector的最后一个值加入到结果的vector中去
层序遍历的模板可以看我之前写的这篇文章:层序遍历模板
3 代码
class Solution {
public:
vector<int> rightSideView(TreeNode* root) {
vector<int> res;
if (root == nullptr)
return res;
queue<TreeNode*> q;
q.push(root);
while(q.size())
{
vector<int> tmp;
int sz = q.size();
for (int i = 0; i < sz; ++ i)
{
TreeNode* t = q.front();
q.pop();
tmp.push_back(t->val);
if (t->left)
q.push(t->left);
if (t->right)
q.push(t->right);
}
//只存入tmp的最后一个值
res.push_back(tmp.back());
}
return res;
}
};