算法通关村—二叉树处理每层元素的题目

news2024/11/18 19:28:07

1. 在每个树行中找最大值

给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。

输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]

依然先写出层序遍历,只不过遍历的过程中需要保存当前一层的最大值。

    public List<Integer> largestValues(TreeNode root) {
        if(root == null) return new ArrayList<Integer>();
        List<Integer> res = new ArrayList<Integer>();
        LinkedList<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while(queue.size()>0){
            int size = queue.size();
            Integer max  = Integer.MIN_VALUE;
            for(int i=0;i<size;i++){
                TreeNode temp = queue.remove();
                max = Math.max(temp.val,max);
                if(temp.left!=null) queue.add(temp.left);
                if(temp.right!=null)  queue.add(temp.right);
            }
            res.add(max);
        }
        return res;
    }

在这里插入图片描述

2. 二叉树的层平均值

637. 二叉树的层平均值

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。

输入:root = [3,9,20,null,null,15,7]
输出:[3.00000,14.50000,11.00000]
解释:第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11 。
因此返回 [3, 14.5, 11] 。

 public List<Double> averageOfLevels(TreeNode root) {
        List<Double> res = new ArrayList<>();
        if(root == null) return res;
        Deque<TreeNode> queue = new ArrayDeque<>();
        queue.add(root);
        while(queue.size()>0){
            Double sum = 0.0;
            int size = queue.size();
            for(int i=0;i<size;i++){
            TreeNode temp = queue.remove();
            sum+=temp.val;
            if(temp.left!=null) queue.add(temp.left);
            if(temp.right!=null) queue.add(temp.right);
            
            }
            res.add(sum/size);
        }
        return res;
    }

在这里插入图片描述

3. 二叉树的右视图

二叉树的右视图
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
输入: [1,2,3,null,5,null,4]
输出: [1,3,4]

3.1 层序遍历+记录每层的最后一个元素

public List<Integer> rightSideView(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        if(root == null) return res;
        Deque<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while(queue.size()>0){
            int size = queue.size();
            for(int i=0;i<size;i++){
                TreeNode temp = queue.remove();
                if(temp.left != null) queue.add(temp.left);
                if(temp.right!=null) queue.add(temp.right);
                // 记录每层最后一个元素
                if(i==size-1){
                    res.add(temp.val);
                }
            }
        }
        return  res;
    }

在这里插入图片描述

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

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

相关文章

VLT:Vision-Language Transformer用于引用的视觉语言转换和查询生成分割

摘要 在这项工作中&#xff0c;我们解决了引用分割的挑战性任务。引用分割中的查询表达式通常通过描述目标对象与其他对象的关系来表示目标对象。因此&#xff0c;为了在图像中的所有实例中找到目标实例&#xff0c;模型必须对整个图像有一个整体的理解。为了实现这一点&#…

【Java】Springboot脚手架生成初始化项目代码

Springboot配置生成初始化项目代码可以通过mvn的mvn archetype:generate 和阿里云原生应用脚手架&#xff08;地址&#xff09;、spring官方提供的start初始化生成页面(地址&#xff09;。 1、mvn archetype:generate 通过mvn选择对应的脚手架可以快速生成初始化代码&#xf…

【网络安全】网络安全威胁实时地图 - 2023

文章目录 [TOC] ① 360 安全大脑360 APT全景雷达 ② 瑞星杀毒瑞星云安全瑞星网络威胁态势感知平台 ③ 比特梵德 Bitdefender④ 飞塔防火墙 FortiGuard⑤ 音墙网络 Sonicwall⑥ 捷邦 Check Point⑦ AO卡巴斯基实验室全球模拟隧道模拟 ⑧ 数字攻击地图⑨ Threatbutt互联网黑客攻击…

Ansys Lumerical | GPU,超透镜,铌酸锂调制器等重磅来袭!

Ansys Lumerical 2023R2新版本正式发布&#xff01;主要集中在光子学多物理场求解器增强&#xff0c;FDTD GPU 加速支持&#xff0c;超透镜流程优化&#xff0c;铌酸锂调制器支持&#xff0c;光子集成电路仿真能力增强&#xff0c; GUI增强和云计算支持等。 光子学核心技术 1、…

【Clion 2】多行TODO使用

一、TODO: 说明&#xff1a; 有时需要标记部分代码以供将来参考&#xff1a; 优化和改进的领域、可能的更改、要讨论的问题等等。 支持&#xff1a; TODO和FIXME小写和大写。这些模式可以在任何受支持的文件类型的行注释和块注释内使用。 创建TODO项 在要添加注释的代码行中…

问道管理:房地产政策调控新信号出现,南京有二手房东连夜跳价100万

最近几天&#xff0c;国家发改委、住建部、北上广深住建部门表态挺楼市&#xff0c;放宽房地产方针。一夜之间&#xff0c;地产股大涨&#xff0c;多地商场情绪恢复。 诸葛找房数据显现&#xff0c;自7月29日起&#xff0c;南京万科金域缇香、紫园、后标营、翠屏诚园等小区的部…

云道资本:2023中国氢能源产业-氢制备深度研究报告(附下载)

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 中国可再生能源消纳能力提升远远滞后于发电占比的提升。大规模的可再生能源发电是实现碳中和的关键一步&#xff0c;但风电、光伏发电间歌性、波动性强&#xff0c;电网消纳压力较大&#xff0c;且电…

【图论】强连通分量进阶

一.作用 强连通分量可以判断环和进行缩点。还有一系列作用.... 这篇文章介绍缩点 二.题目 https://www.luogu.com.cn/problem/P2341 三.思路 我们分析可以知道当一个点没有出度时&#xff0c;则为最受欢迎的牛。但如果有多个出度&#xff0c;则没有最受欢迎的牛。 这是只有…

【Docker】部署 mysql8.0 无法访问

文章目录 &#x1f5fd;先来说我的是什么情况&#x1fa81;问题描述&#x1fa81;解决方法&#xff1a;✔️1 重启iptables✔️2 重启docker &#x1fa81;其他有可能连不上的原因✔️1 客户端不支持caching_sha2_password的加密方式✔️2 my.conf 配置只有本机可以访问 &#…

第一章-JavaScript基础进阶part1:DOM

文章目录 前言一、DOM简介1.1 DOM树 二、获取DOM元素1、根据元素id获取-getElementById2、根据元素名称获取元素对象-getElementsByTagName3、H5新增API获取元素4、获取body和html元素 三、DOM元素事件四、操作DOM元素1、改变元素内容2、常用元素的属性操作3、实践案例4、操作D…

Linux操作系统3-项目部署

手动部署 步骤 1.在idea中将文件项目进行打包 2.自定义一个文件目录&#xff0c;上传到Linux 3.使用 java -jar jar包名就可以进行运行 注意,如果需要启动该项目&#xff0c;需要确定所需的端口是否打开 采用这种方式&#xff0c;程序运行的时候会出现霸屏&#xff0c;并且会…

100条Python练习题

100条Python练习题&#xff0c;希望对你提升有所帮助&#xff01; 编写一个程序&#xff0c;输入两个数并计算它们的和。编写一个程序&#xff0c;输入一个字符串&#xff0c;并倒序输出该字符串。编写一个程序&#xff0c;判断一个数是否为质数。编写一个程序&#xff0c;计…

Python+PIL计算两个图像的相似度并返回第一个不匹配的像素的x坐标(附完整版代码)

前言 前几天看到一篇文章写Pythonselenium超级鹰对滑块验证码的操作&#xff0c;大致的思想如下&#xff1a; 1、就是将滑块验证码进行截图 2、利用超级鹰的API进行对图片的处理&#xff0c; 3、返回滑块的距离 我在很久之前也遇到过类似的需求&#xff0c; 当时我的好友帮我写…

16 Springboot——登录功能实现

16.1 修改index.html中表单跳转的地址 将action的地址改为user/login&#xff0c;意思是点击提交按钮后&#xff0c;就会跳转到user/login地址&#xff0c;然后只要用Controller类的RequsetMapping去接这个地址就行了。 <body class"text-center"><form cl…

【已解决】vagrant up下载box速度太慢的解决方法

一、问题背景 本菜鸟在学习雷神(尚硅谷雷丰阳)的这个教程Java项目《谷粒商城》Java架构师 | 微服务 | 大型电商项目的时候&#xff0c;按照视频教程的步骤&#xff0c;正准备用Vagrant工具给VirtualBox安装并启动Centos7的Linux操作系统&#xff0c;当在Windows命令提示符窗体…

RL — 强化学习技巧

一、说明 深度学习&#xff08;DL&#xff09;很难训练&#xff0c;强化学习&#xff08;RL&#xff09;要差得多。在早期开发中&#xff0c;遵循与 DL 相同的策略&#xff1a;保持简单&#xff01;消除任何妨碍您的花里胡哨的东西&#xff0c;并将不确定性降至最低。具体到RL&…

QGIS下载谷歌地图或者其他地图

QGIS安装Welcome to the QGIS project! 打开QGIS 添加图源 Google_Maps: https://mt1.google.com/vt/lyrsr&x{x}&y{y}&z{z} Google_Terrain: https://mt1.google.com/vt/lyrst&x{x}&y{y}&z{z} Google_Roads:https://mt1.google.com/vt/lyrsh&x{x…

Spring Boot参数校验实现自定义响应类优雅处理

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; Spring Boot参数校验实现自定义响应类优雅处理 ⏱️ 创作时间&#xf…

模拟考试系统与传统教育方法的对比分析

随着科技的不断进步&#xff0c;教育领域也在不断更新和发展。模拟考试系统作为一种新的教育方式&#xff0c;与传统的教育方法相比&#xff0c;在学习效果、学习方式和学习体验等方面具有诸多优势。 学习效果 模拟考试系统能够提供更全面、更真实的考试环境&#xff0c;从而…

使用mysql容器创建主从同步

1、主数据库设置 创建主数据库容器&#xff1a; docker run -d --restartalways --name mysql-master -p 3306:3306 -v /home/apps/mysql-master/conf:/etc/mysql/conf.d -v /home/apps/mysql-master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 mysql:8.0.16 --lower…