当前位置: 首页 > news >正文

力扣hot100——二叉树的右视图

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

解题思路:

// 每一层的最右边数据

// 层序遍历找出每层看到的元素

/**
 * 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> res;
        vector<vector<int>> level_res;
        level_order(root, level_res); // 获取层序遍历结果
        for (auto& v : level_res) {
            res.push_back(v.back()); // 取每一层的最后一个元素
        }
        return res;
    }

    void level_order(TreeNode* root, vector<vector<int>>& v) {
        if (!root) {
            return; // 如果根节点为空,直接返回
        }
        queue<TreeNode*> q;
        q.push(root); // 将根节点加入队列
        while (!q.empty()) {
            int level_size = q.size(); // 当前层的节点数量
            vector<int> level_v;       // 存储当前层的节点值
            // 遍历当前层的所有节点
            for (int i = 0; i < level_size; i++) {
                auto temp = q.front();
                q.pop();
                level_v.push_back(temp->val); // 将当前节点的值加入当前层的向量
                // 将当前节点的左右子节点加入队列
                if (temp->left) q.push(temp->left);
                if (temp->right) q.push(temp->right);
            }
            v.push_back(level_v); // 将当前层的节点值加入结果
        }
    }
};

相关文章:

  • 基于同轴聚类点云去重的铆钉高度测量
  • [数学] 常用数学公式(逐步更新完善)
  • html中rel、href、src、url的区别
  • Python项目源码33:待办事项列表应用2.0(命令行界面+Json+类)
  • DeepSeek 提示词:高效的提示词设计
  • GIST框架:深度学习助力组织病理学与转录组学的空间整合分析|顶刊精析·25-02-24
  • Oracle Fusion Middleware更改weblogic密码
  • 深度解析SmartGBD助力Android音视频数据接入GB28181平台
  • TCP/IP的分层结构、各层的典型协议,以及与ISO七层模型的差别
  • 【Git版本控制器】第五弹——远程仓库,push,pull,gitignore
  • DeepSeek 细节之 MoE
  • 什么是将应用放在边缘服务器上创建?应用不是在用户手机上吗?边缘计算究竟如何优化?通过两个问题来辨析
  • 2020年蓝桥杯Java B组第二场题目+部分个人解析
  • Maven 基础环境搭建与配置(二)
  • Orange 开源项目 - 集成阿里云大模型
  • 【信息系统项目管理师-案例真题】2008下半年案例分析答案和详解
  • 自定义Spring Boot Starter(官网文档解读)
  • 测试学习java第二天
  • 国标28181协议在智联视频超融合平台中的接入方法
  • BugKu练习记录:这不是md5
  • 8000余万元黄金投入研发后“不知去向”,咋回事?
  • 海军“吉祥方舟”号医院船开展海上卫勤演练
  • 加快推进科技服务业高质量发展,九部门联合发文
  • 日月谭天 | 赖清德倒行逆施“三宗罪”,让岛内民众怒不可遏
  • 去年上海全市博物馆接待观众约4087万人次,同比增31.9%
  • AI赋能科学红毯,机器人与科学家在虚实之间叩问“科学精神”