二叉树的右视图

简介: 二叉树的右视图

199. 二叉树的右视图

一、题目描述:

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

示例 1:

输入: [1,2,3,null,5,null,4]
输出: [1,3,4]
示例 2:

输入: [1,null,3]
输出: [1,3]
示例 3:

输入: []
输出: []

提示:

二叉树的节点个数的范围是 [0,100]
-100 <= Node.val <= 100

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/binary-tree-right-side-view
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、思路分析:

image.png

看图我们发现, 右视图的节点都是每一层的最后一个节点, 所以采用层序遍历最为方便

先判断此时队列长度(每次长度都刚好是那一层拥有的结点数),同时记录每一层结点的数组 now 要重置,即每一层都要清空,再重新记录该层结点
然后进行循环,循环长度为队列长度
每次循环,逐个从队列头部弹出结点,然后将结点值压入该层数组 now ,弹出每个结点的同时也要判断是否存在左右子树,有的话继续压入队列
该层循环完,取该层数组 now 的最后一个即可,即每层的最右边结点,压入 result
返回 result

三、AC 代码:

class Solution {
    public List<Integer> rightSideView(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        if (root == null) return list;
        
        Queue<TreeNode> q = new LinkedList<>();
        q.offer(root);
        while (!q.isEmpty()) {
            int n = q.size();
            for (int i = 0; i < n; i++) {
                TreeNode node = q.poll();
                if (i == n - 1) list.add(node.val);//当前节点是否为本层的最后一个节点
                if (node.left != null) q.offer(node.left);
                if (node.right != null) q.offer(node.right);
            }
        }
        return list;
    }
}

四、总结:

image.png

掘友们,解题不易,留下个赞或评论再走吧!谢啦~ 💐

希望对你有帮助

相关文章
|
人工智能 计算机视觉
FaceFusion:探索无限创意,创造独一无二的面孔融合艺术!
FaceFusion:探索无限创意,创造独一无二的面孔融合艺术!
FaceFusion:探索无限创意,创造独一无二的面孔融合艺术!
|
监控 NoSQL Java
后端接口性能优化分析-问题发现&问题定义(下)
后端接口性能优化分析-问题发现&问题定义
373 0
|
数据采集 监控 数据可视化
用Python构建动态折线图:实时展示爬取数据的指南
本文介绍了如何利用Python的爬虫技术从“财富吧”获取中国股市的实时数据,并使用动态折线图展示股价变化。文章详细讲解了如何通过设置代理IP和请求头来绕过反爬机制,确保数据稳定获取。通过示例代码展示了如何使用`requests`和`matplotlib`库实现这一过程,最终生成每秒自动更新的动态股价图。这种方法不仅适用于股市分析,还可广泛应用于其他需要实时监控的数据源,帮助用户快速做出决策。
643 0
|
自然语言处理 机器人 API
Instruct2Act:使用大型语言模型将多模态指令映射到机器人动作
Instruct2Act是一个框架,它结合了大型语言模型和多模态基础模型,将自然语言和视觉指令转换为机器人的顺序动作,实现精确的感知、规划和行动,展示了强大的零样本性能和灵活性。
485 0
Instruct2Act:使用大型语言模型将多模态指令映射到机器人动作
|
算法 数据库 开发者
[软件工程导论(第六版)]第3章 需求分析(复习笔记)
[软件工程导论(第六版)]第3章 需求分析(复习笔记)
|
机器学习/深度学习 人工智能 数据可视化
首篇虚拟现实+人工智能综述!浙大、港中深等发布AI医疗最新报告
【9月更文挑战第21天】近年来,AI驱动的虚拟现实(VR)技术革新了医疗领域,浙江大学等发布的报告系统性审视了这一融合趋势。报告提出三大应用分类——可视化增强、医疗数据处理与VR辅助干预,助力精准诊疗。然而,技术成熟度、数据安全及伦理问题仍待解决。这一跨学科研究为未来医疗科技奠定了基础。报告详情参见:&lt;https://www.ijcai.org/proceedings/2024/920&gt;。
384 4
|
前端开发 搜索推荐 开发者
【Flutter前端技术开发专栏】Flutter中的自定义主题与暗黑模式
【4月更文挑战第30天】本文介绍了如何在Flutter中自定义主题和实现暗黑模式。通过`ThemeData`类定义应用的外观,包括颜色、字体和样式。示例展示了如何设置主色、强调色及文本、按钮主题。暗黑模式可通过`darkTheme`属性启用,结合`ThemeData.dark()`方法定制。利用`MediaQuery`监听系统亮度变化,动态调整暗黑模式状态。Flutter的这些特性有助于开发者创建独特且用户友好的界面。
784 0
【Flutter前端技术开发专栏】Flutter中的自定义主题与暗黑模式
|
关系型数据库 MySQL
MySQL Command line client窗口闪退原因
MySQL Command line client窗口闪退原因
699 0
|
Java Docker Windows
Windows下部署SpringBoot的实践方案(Docker & Docker Desktop)
Windows下部署SpringBoot的实践方案(Docker & Docker Desktop)
870 0
|
弹性计算 JavaScript Linux
低代码音视频工厂-互动直播体验
本场景主要介绍如何在Alibaba Cloud Linux 3操作系统的ECS实例上部署低代码音视频互动直播的Demo,只需两行代码、三分钟,即可搭建一个直播间,实现一个直播的全流程。