二叉树专题刷题

二叉树的层平均值

题目

637. 二叉树的层平均值 - 力扣(LeetCode)

解题思路

使用三个集合,sums集合存储每层的总和,count集合存储每层的节点数,averages存储每层的平均值。

这里要讲一下add方法和set方法的区别

add方法:用于向集合的末尾插入新的元素,是List接口中最常用的插入方法

set方法:本质上是一种替换操作, 要设置某个位置上的元素,这个位置必须已存在,否则会抛出异常

代码

 public List<Double> averageOfLevels(TreeNode root) {List<Integer> count = new ArrayList<>();List<Double> sums = new ArrayList<>();List<Double> averages = new ArrayList<>();dfs(root,0,sums,count);for(int i=0;i<sums.size();i++){averages.add(sums.get(i)/count.get(i));}return averages;}private void dfs(TreeNode root, int i, List<Double> sums, List<Integer> count) {if(root == null){return;}if(i>=sums.size()){sums.add(1.0*root.val);count.add(1);}else{sums.set(i,sums.get(i)+root.val);count.set(i,count.get(i)+1);}dfs(root.left,i+1,sums,count);dfs(root.right,i+1,sums,count);}

二叉树的层序遍历

题目

102. 二叉树的层序遍历 - 力扣(LeetCode)

解题思路

使用先进先出队列,每次都重置队列长度,使每次队列里都是每层的节点

代码

  public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> sum = new ArrayList<>();if(root==null)return sum;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {List<Integer> level = new ArrayList<>();int queueSize = queue.size();for (int i = 0; i < queueSize; i++) {TreeNode node = queue.poll();level.add(node.val);if(node.left!=null){queue.offer(node.left);}if(node.right!=null){queue.offer(node.right);}}sum.add(level);}return sum;}

二叉树的锯齿型层序遍历

题目

103. 二叉树的锯齿形层序遍历 - 力扣(LeetCode)

解题思路

使用depue双端队列,两端都可进。只需按照奇偶性,从不同端入队即可。

代码

 public List<List<Integer>> zigzagLevelOrder(TreeNode root) {List<List<Integer>> sum = new ArrayList<>();if(root==null)return sum;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);boolean flag = false;while (!queue.isEmpty()) {Deque<Integer> level = new LinkedList<Integer>();int queueSize = queue.size();for (int i = 0; i < queueSize; i++) {TreeNode node = queue.poll();if(!flag){level.offerLast(node.val);}else{level.offerFirst(node.val);}if(node.left!=null){queue.offer(node.left);}if(node.right!=null){queue.offer(node.right);}}sum.add((List<Integer>) level);flag=!flag;}return sum;}

二叉树的右视图

题目

199. 二叉树的右视图 - 力扣(LeetCode)

解题思路

我的思路相当暴力,只需要进行层序遍历,然后获取每层最右边的节点

代码

public List<Integer> rightSideView(TreeNode root) {List<Integer> list = new ArrayList<>();if(root==null)return list;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {List<Integer> level = new ArrayList<>();int queueSize = queue.size();for (int i = 0; i < queueSize; i++) {TreeNode node = queue.poll();level.add(node.val);if(node.left!=null){queue.offer(node.left);}if(node.right!=null){queue.offer(node.right);}}list.add(level.get(level.size()-1));}return list;}

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

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

相关文章

windows运行库合集(windows必备运行库)

Windows运行库&#xff08;Windows Runtime&#xff0c;简称WinRT&#xff09;是微软为Windows 8及以上版本推出的一种新的应用程序框架&#xff0c;它采用了基于COM的API调用方式&#xff0c;并使用了新的应用程序打包和分发方式。 WinRT包含了大量的通用API&#xff0c;可以…

J026_统计投票人数

一、需求描述 统计投票人数 某个班级80名学生&#xff0c;现在需要组织秋游活动&#xff0c;班长提供了4个景点依次是&#xff08;A、B、C、D&#xff09;&#xff0c;每个学生只能选择一个景点&#xff0c;请统计出最终哪个景点想去的人数最多。 二、代码实现 package com…

JS的隐式转换

1.什么是JS的隐式转换 JavaScript中的隐式转换是指在运行过程中&#xff0c;代码自动将一个数据类型转换为另一个数据类型&#xff0c;而无需显式地调用转换函数。 原因 JavaScript是弱类型语言&#xff0c;这意味着它不像Java&#xff0c;C一样的强类型语言有预先确定的类型…

离线安装pip包

文章目录 离线机器安装需要的python包 离线机器安装需要的python包 本机做一台和实际的生产机器相同环境的虚拟机 在本机环境下下载离线包 pip3 download gunicorn -d /usr/local/gunicorn-package -i https://pypi.tuna.tsinghua.edu.cn/simple 将gunicorn-package下的文件…

【088】基于SpringBoot+Vue实现高校就业管理系统

系统介绍 基于SpringBootVue实现的高校就业管理系统 课程设计 大作业必备 基于SpringBootVue实现高校就业管理系统采用前后端分离的架构方式&#xff0c;系统分为管理员、企业、辅导员、学生四种角色&#xff0c;实现了用户登录、学生注册、商家注册、首页统计、个人信息管理、…

动手学深度学习(Pytorch版)代码实践 -注意力机制-Transformer

68Transformer 1. PositionWiseFFN 基于位置的前馈网络 原理&#xff1a;这是一个应用于每个位置的前馈神经网络。它使用相同的多层感知机&#xff08;MLP&#xff09;对序列中的每个位置独立进行变换。作用&#xff1a;对输入序列的每个位置独立地进行非线性变换&#xff0c…

备份及恢复Sonarqube服务数据

基础数据&#xff1a; 源数据机ip&#xff1a;192.*.53 测试机ip&#xff1a;192.*.65 Sonarqube访问地址&#xff1a;http://192.*.65:9000/ 账户名&#xff1a;admin 密码&#xff1a;123456 数据库postgres&#xff1a; 版本&#xff1a;PostgreSQL 15.3 一、数据备份…

AI写歌词,为你的音乐之旅添彩

在追求音乐梦想的道路上&#xff0c;每一个音符都承载着我们的情感与故事。而精彩的歌词&#xff0c;更是让这些音符焕发出耀眼光芒的关键。如今&#xff0c;AI 写词的出现&#xff0c;为我们的音乐之旅增添了绚丽的色彩。 “妙笔生词智能写歌词软件&#xff08;veve522&#…

JAVA自定义注释

interface 声明 package test; public interface InProgress { } InProgress public void calculateInterest(float amount, float rate) { } 带成员 public interface TODO {String value(); } InProgress //只有成员变量名有value时&#xff0c;值有给value赋值时可以这…

Spring Cloud Eureka

引入&#xff1a;远程调用时&#xff0c;url是写死的 String url "http://127.0.0.1:9090/product/" orderInfo.getProductId(); 解决思路&#xff1a; 比如&#xff08;医院&#xff0c;学校等&#xff09;机构的电话号码发生变化&#xff0c;就需要通知各个使⽤…

基于深度学习的问答系统

基于深度学习的问答系统是一种利用深度学习技术从文本数据中提取信息并回答用户提出的问题的技术。它在智能助手、客服系统、教育和医疗等领域有广泛应用。以下是对这一领域的系统介绍&#xff1a; 1. 任务和目标 问答系统的主要任务和目标包括&#xff1a; 信息检索&#x…

Android14系统应用统一裁剪方案

Android14系统应用统一裁剪方案 背景 当前移除集成到系统里的应用,一般都是根据应用名,到各个mk文件里逐个在PRODUCT_PACKAGES中删除;这种方法,耗时而且不易管理集成到系统里的应用;需要有一个统一管理删除不需要应用的方案。 方案 参考PRODUCT_PACKAGES变量,添加PRO…

【PyTorch单点知识】自动求导机制的原理与实践

文章目录 0. 前言1. 自动求导的基本原理2. PyTorch中的自动求导2.1 创建计算图2.2 反向传播2.3 反向传播详解2.4 梯度清零2.5 定制自动求导 3. 代码实例&#xff1a;线性回归的自动求导4. 结论 0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理解&…

游戏的无边框模式是什么?有啥用?

现在很多游戏的显示设置中&#xff0c;都有个比较特殊的选项“无边框”。小伙伴们如果尝试过&#xff0c;就会发现这个效果和全屏几乎一毛一样&#xff0c;于是就很欢快地用了起来&#xff0c;不过大家也许会发现&#xff0c;怎么和全屏比起来&#xff0c;似乎有点不够爽快&…

渲染引擎实践 - OSG引擎渲染一帧的过程

一&#xff1a;概述 经过前面两节的介绍&#xff0c;我们已经创建了窗口(OSG引擎窗口)和启动了渲染线程(OSG渲染线程)。当应用程序加载好模型数据以后&#xff0c;就开始正式的渲染了&#xff0c;那么本节分析下渲染一帧的过程&#xff0c;本文尽量做到简单&#xff0c;清晰&am…

uniapp编译成h5后接口请求参数变成[object object]

问题&#xff1a;uniapp编译成h5后接口请求参数变成[object object] 但是运行在开发者工具上没有一点问题 排查&#xff1a; 1&#xff1a;请求参数&#xff1a;看是否是在请求前就已经变成了[object object]了 结果&#xff1a; 一切正常 2&#xff1a;请求头&#xff1a;看…

AST反混淆实战:提升JavaScript代码的可读性与调试便利性

博客标题&#xff1a;AST反混淆&#xff1a;提升JavaScript代码的可读性与调试便利性 引言 JavaScript代码混淆是一种常见的保护源码的方法&#xff0c;但这也给代码的维护和调试带来了不小的挑战。抽象语法树&#xff08;AST&#xff09;提供了一种结构化的方式来分析和转换…

C语言实现数据结构B树

B树&#xff08;B-Tree&#xff09;是一种自平衡的树数据结构&#xff0c;它维护着数据的有序性&#xff0c;并允许搜索、顺序访问、插入、删除等操作都在对数时间内完成。B树广泛用于数据库和操作系统的文件系统中。 B树的基本特性 根节点&#xff1a;根节点至少有两个子节点…

平安好车主:“保”你车平安,“养”出好生活~

“小朋友 你是否有很多问号,为什么......”从出生到长大,不论我们身居何处,年岁几何,妈妈似乎总有嘱咐不完的话。小时候,总不能理解妈妈的话,只想摆脱唠叨,期盼快快长大。 如今,我们羽翼渐丰,已能驾驭人生,肩负起家庭的重任,但妈妈的话却依然从未落下。不过,此刻的我们,不仅能…

Gitea 仓库事件触发Jenkins远程构建

文章目录 引言I Gitea 仓库事件触发Jenkins远程构建1.1 Jenkins配置1.2 Gitea 配置引言 应用场景:项目部署 I Gitea 仓库事件触发Jenkins远程构建 Gitea支持用于仓库事件的Webhooks 1.1 Jenkins配置 高版本Jenkins需要关闭跨域限制和开启匿名用户访问 在Jenkins启动前加入…