mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-08-06 18:24:23 +08:00
2.0 KiB
2.0 KiB
题目地址
https://leetcode-cn.com/problems/binary-tree-right-side-view/
思路
这里再讲一遍二叉树的广度优先遍历(层序遍历)
需要借用一个辅助数据结构队列来实现,队列先进先出,符合一层一层遍历的逻辑,而是用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。
使用队列实现广度优先遍历,动画如下:
这样就实现了层序从左到右遍历二叉树。
建议先做一下这道题目0102.二叉树的层序遍历, 在做这道,就会发现这是一道 广度优先搜索模板题目,层序遍历的时候,将每一层的最后元素放入result数组中,
层序遍历的时候,将单层的最后面的元素放进数组中,随后返回数组就可以了。
代码如下:
C++代码
class Solution {
public:
vector<int> rightSideView(TreeNode* root) {
queue<TreeNode*> que;
if (root != NULL) que.push(root);
vector<int> result;
while (!que.empty()) {
int size = que.size();
for (int i = 0; i < size; i++) {
TreeNode* node = que.front();
que.pop();
if (i == (size - 1)) result.push_back(node->val);//将每一层的最后元素放入result数组中
if (node->left) que.push(node->left);
if (node->right) que.push(node->right);
}
}
return result;
}
};
更多算法干货文章持续更新,可以微信搜索「代码随想录」第一时间围观,关注后,回复「Java」「C++」 「python」「简历模板」「数据结构与算法」等等,就可以获得我多年整理的学习资料。