leetcode算法(199.二叉树的右视图)

层序遍历的时候,判断是否遍历到单层的最后面的元素,如果是,就放进result数组中,随后返回result就可以了。

cpp 复制代码
class Solution {
public:
    vector<int> rightSideView(TreeNode* root) {
        // 创建一个队列用于BFS层序遍历
        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);
                
                // 将当前节点的左子节点加入队列(如果存在)
                if (node->left) que.push(node->left);
                
                // 将当前节点的右子节点加入队列(如果存在)
                if (node->right) que.push(node->right);
            }
        }
        
        // 返回右视图结果
        return result;
    }
};
相关推荐
辰烨chenye24 分钟前
LeetCode Hot 100 题解 · 普通数组篇
算法·leetcode·职场和发展
hqyjzsb4 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
辰烨chenye4 小时前
LeetCode Hot 100 题解 · 二分篇
java·算法·leetcode
微功夫信息技术4 小时前
分层多智能体强化学习驱动的非急救转运公平 - 效率统一调度系统研究与实践
人工智能·学习·算法·动态规划
sanjiaomao3334 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
乐迪信息5 小时前
如何通过AI防爆摄像机精准判断船舶超速?
大数据·人工智能·算法·安全·目标跟踪
雨落在了我的手上5 小时前
Java数据结构(十一):优先级队列(堆)
数据结构
大圣编蚕5 小时前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法
小玮看世界7 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
黎阳之光7 小时前
数字孪生赋能全域水网,实现水资源管控与节水降碳双向提升
人工智能·物联网·算法·安全·数字孪生