面试算法46:二叉树的右侧视图

news2025/7/28 3:12:42

题目

给定一棵二叉树,如果站在该二叉树的右侧,那么从上到下看到的节点构成二叉树的右侧视图。例如,图7.6中二叉树的右侧视图包含节点8、节点10和节点7。请写一个函数返回二叉树的右侧视图节点的值。
在这里插入图片描述

分析

既然这个题目和二叉树的层相关,因此可以应用广度优先搜索来解决。由于需要区分二叉树不同的层,因此在遍历时把不同层的节点放入不同的队列,也就是利用两个队列分别存放当前遍历的层和下一层的节点。

public class Test {
    public static void main(String[] args) {
        TreeNode node8 = new TreeNode(8);
        TreeNode node6 = new TreeNode(6);
        TreeNode node10 = new TreeNode(10);
        TreeNode node5 = new TreeNode(5);
        TreeNode node7 = new TreeNode(7);

        node8.left = node6;
        node8.right = node10;
        node6.left = node5;
        node6.right = node7;

        List<Integer> result = rightSideView(node8);
        System.out.println(result);
    }

    public static List<Integer> rightSideView(TreeNode root) {
        List<Integer> view = new LinkedList<>();
        if (root == null) {
            return view;
        }

        Queue<TreeNode> queue1 = new LinkedList<>();
        Queue<TreeNode> queue2 = new LinkedList<>();
        queue1.offer(root);
        while (!queue1.isEmpty()) {
            TreeNode node = queue1.poll();
            if (node.left != null) {
                queue2.offer(node.left);
            }

            if (node.right != null) {
                queue2.offer(node.right);
            }

            if (queue1.isEmpty()) {
                view.add(node.val);
                queue1 = queue2;
                queue2 = new LinkedList<>();
            }
        }

        return view;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1156564.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

菜单栏翻译软件Bob录屏权限在哪打开

Bob是一款Mac翻译软件&#xff0c;翻译方式支持划词翻译、截图翻译以及实时翻译&#xff0c;翻译引擎支持有道翻译、百度翻译和谷歌翻译&#xff08;国内和国外双版本&#xff09;。速度非常快&#xff0c;使用简单&#xff0c;bob使用这款好用的翻译软件吧. 注意事项&#xff…

用起来顺手的在线表结构设计软件工具Itbuilder,与你共享

在线表结构设计软件工具需功能简洁&#xff0c;去除晦涩难懂的设置&#xff0c;化繁为简&#xff0c;实用为上&#xff0c;上手非常容易&#xff0c;这些itbuilder统统可以做到。 itbuilder是一款基于浏览器开发的在线表结构设计软件工具&#xff0c;借助人工智能提高效率&…

C/C++选择排序算法

文章目录 例题原理阐述代码实现总结 例题 原理阐述 从小到大排序&#xff0c;每次选择序列的最小的一个数&#xff1b; 将原来的序列A分割为排好序的序列a和未排序的序列b&#xff1b; 从未排好序的序列b中找到最小值&#xff0c;插入到排好序的序列a后面&#xff0c;形成从小…

golang 实现雪花算法

雪花算法概述 snowflake 是 twitter 开源的分布式ID生成算法&#xff0c;其核心思想为&#xff0c;一个long型的ID&#xff1a; 41 bit 作为毫秒数 - 41位的长度可以使用69年10 bit 作为机器编号 &#xff08;5个bit是数据中心&#xff0c;5个bit的机器ID&#xff09; - 10位…

二叉树OJ题(检查两颗数是否相同、另一棵树的子树、翻转二叉树、判断平衡二叉树)

文章目录 二叉树OJ题一、 检查两颗数是否相同1.思路2.解题步骤3.代码 二、另一棵树的子树1.思路2.代码 三、翻转二叉树1.思路2.解题步骤3.代码 四、判断平衡二叉树1.思路2.代码 二叉树OJ题 一、 检查两颗数是否相同 1.思路 1.两个树&#xff0c;在保证结构相同的同时&#xff0…

语音信号处理给音乐信号增加房间混响效果

语音信号处理给音乐信号增加房间混响效果 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务 1 源码布局 2 源文件与音频文件和生成文件 3 编译方法

数据结构第一课-----------数据结构的介绍

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

抖音招聘报白怎么处理?

抖音直播招聘报白是通过抖音直播方式展现职位信息&#xff0c;并与求职者进行互动的招聘方式。在抖音平台上&#xff0c;企业或者人力资源公司可以通过直播的形式&#xff0c;将职位以视频直播的方式展现出来。通过抖音直播招聘报白&#xff0c;企业或者人力资源公司可以利用抖…

C#中LINQtoSQL的设置与连接

目录 一、首次安装LinqToSql类 二、非首次安装LinqToSql类 1.接受原有数据库连接 2.建立新的数据库连接 3.建立本地数据库连接 LINQ&#xff08;Language-Integrated Query&#xff0c;语言集成查询&#xff09;是微软公司提供的一项新技术&#xff0c;它能够将查询功能直…

(vue)进入页面自动触发点击事件

(vue)进入页面自动触发点击事件 背景&#xff1a;进入页面后需根据表单默认值查询出数据 效果&#xff1a; 1.alert弹出说明已进入点击事件中 2.成功显示 页面写法 思路&#xff1a;使用 ref 属性将 div 标签绑定到了 Vue 实例中的 clickMe 变量上。在 mounted 钩子函数中&…

IDEA初步入门

1 安装 现在的系统更迭很快&#xff0c;很多软件都只支持win10 和 11了&#xff0c;但我们过时党还在用win7. 所以就必须找到合适的版本。在windows 7 64位系统下&#xff0c;可以使用IDEA 2020.1.4版本。 在Jetbrain官方下&#xff0c;找到历史版本&#xff0c;找到windows版…

基于知识库的chatbot或者FAQ

背景 最近突然想做一个基于自己的知识库&#xff08;knowlegebase&#xff09;的chatbot或者FAQ的项目。未来如果可以在公司用chatgpt或者gpt3.5之后的模型的话&#xff0c;还可以利用gpt强大的语言理解力和搜索出来的用户问题的相关业务文档来回答用户在业务中的问题。 Chat…

react-markdown支持83版本的Chrome,解决Object.hasOwn is not a function问题

旧版浏览器支持 react-markdown用了一个ES2022的api&#xff0c;Object.hasOwn测试的时候一切正常&#xff0c;当我切换到生成环境的旧版的83的Chrome之后&#xff0c;发现会报Object.hasOwn is not a function这个错误。 https://github.com/remarkjs/react-markdown/issues/…

智能运维第一步:HDD磁盘故障预测

当今数字化时代&#xff0c;信息技术扮演着企业和组织运营的关键角色。然而&#xff0c;随着IT环境不断复杂化和数据量激增&#xff0c;传统的运维管理方法已经无法满足日益增长的需求。为应对这一挑战&#xff0c;智能运维&#xff08;Artificial intelligence for IT operati…

在Jetpack Compose中使用Paging 3实现无限滚动

在Jetpack Compose中使用Paging 3实现无限滚动 本文将介绍在Jetpack Compose中进行分页加载。分页加载意味着一次只加载应用程序中的小数据块。 假设您在服务器上有大量数据&#xff0c;并且您希望在UI上显示这些数据。显然&#xff0c;您不希望一次性加载所有数据。您希望每次…

Docker(1)——安装Docker以及配置阿里云镜像加速

目录 一、简介 二、安装Docker 1. 访问Docker官网 2. 卸载旧版本Dokcer 3. 下载yum-utils&#xff08;yum工具包集合&#xff09; 4. 设置国内镜像仓库 5. 更新yum软件包索引 6. 安装Docker 7. 启动Docker 8. 卸载Docker 三、阿里云镜像加速 1. 访问阿里云官网 2. …

C++——类和对象之拷贝构造

拷贝构造 本章思维导图&#xff1a; 注&#xff1a;本章思维导图对应的xmind文件和.png文件都已同步上传到”资源“ 如果我们想要用一个已经存在的对象实例化一个与之完全相同的对象&#xff0c;怎么做呢&#xff1f; C提供了一个简单的方法——拷贝构造 拷贝构造是C类里面默…

如何利用python连接讯飞的星火大语言模型

星火大模型是科大讯飞推出的一款人工智能语言模型&#xff0c;它采用了华为的昇腾910 AI处理器。这款处理器是一款人工智能处理器&#xff0c;具有强大的计算能力和高效的能耗控制能力。 华为昇腾910 AI处理器采用了创新的Da Vinci架构&#xff0c;这种架构在设计上充分考虑了…

均值、方差、标准差

1 中间值和均值 表现&#xff02;中间值&#xff02;的统计名词&#xff1a; a.均值:   mean&#xff0c;数列的算术平均值&#xff0c;反应了数列的集中趋势,等于有效数值的合除以有效数值的个数&#xff0e;b.中位值:  median&#xff0c;等于排序后中间位置的值&#x…

工会排队营销玩法,让消费者乐于参与其中

小编介绍&#xff1a;10年专注商业模式设计及软件开发&#xff0c;擅长企业生态商业模式&#xff0c;商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地&#xff1b;扶持10余个电商平台做到营收过千万&#xff0c;数百个平台达到百万会员&#xff0c;欢迎咨询。 工会…