二叉树题目

ops/2025/3/16 9:09:00/

二叉树每层最大值

import java.util.*;class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }
}public class Solution {public List<Integer> max_num(TreeNode root) {List<Integer> result = new ArrayList<>();  // 存储每层的最大值if (root == null) {return result;  // 如果树为空,返回空列表}Queue<TreeNode> queue = new LinkedList<>();  // 初始化队列queue.offer(root);  // 加入根节点while (!queue.isEmpty()) {  // 判断队列是否为空int levelSize = queue.size();  // 当前层的节点数int maxVal = Integer.MIN_VALUE;  // 当前层的最大值,初始化为最小整数值for (int i = 0; i < levelSize; i++) {TreeNode node = queue.poll();  // 取出队首节点maxVal = Math.max(maxVal, node.val);  // 更新当前层的最大值// 将左右子节点加入队列if (node.left != null) {queue.offer(node.left);}if (node.right != null) {queue.offer(node.right);}}result.add(maxVal);  // 将当前层的最大值加入结果}return result;}
}

二叉树每层平均值

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<Double>averageOfLevels(TreeNode root){List<Double> result = new ArrayList();if (root==null){return result;}Queue<TreeNode> queue = new LinkedList();queue.offer(root);while(!queue.isEmpty()){int l = queue.size();double sum = 0;for(int i=0;i<l;i++){TreeNode node = queue.poll();sum+=node.val;if(node.left!=null){queue.offer(node.left);}if(node.right!=null){queue.offer(node.right);}}result.add(sum/l);}return result;}
}

平衡二叉树

class Solution {public boolean isBalanced(TreeNode root) {if (root == null) {return true;}int leftHeight = getHeight(root.left);int rightHeight = getHeight(root.right);if (Math.abs(leftHeight - rightHeight) > 1) {return false;}return isBalanced(root.left) && isBalanced(root.right);
}private int getHeight(TreeNode node) {if (node == null) {return 0;}return Math.max(getHeight(node.left), getHeight(node.right)) + 1;
}
}

二叉树对称

class Solution {public boolean isSymmetric(TreeNode root) {if(root==null){return true;}return isMirror(root.left,root.right);}public boolean isMirror(TreeNode left,TreeNode right){if(left==null && right==null){return true;}if(left==null || right==null){return false;}if(left.val!=right.val){return false;}return isMirror(left.left,right.right) && isMirror(left.right,right.left);}
}

http://www.ppmy.cn/ops/166170.html

相关文章

大语言模型微调和大语言模型应用的区别?

大语言模型微调和大语言模型应用的区别&#xff1f; 1. 定义与目标 微调&#xff08;Fine-tuning&#xff09; 目标&#xff1a;调整预训练模型&#xff08;如GPT、LLaMA、PaLM&#xff09;的参数&#xff0c;使其适应特定任务或领域。 核心&#xff1a;通过额外的训练&#x…

rust 的Clone

Clone 是 Rust 编程语言中一个核心特质&#xff08;trait&#xff09;&#xff0c; 定义了类型如何安全、明确地创建其值的深拷贝&#xff08;deep copy&#xff09;。 下面用实例来演示Clone的作用&#xff0c;先看一下如下的代码&#xff0c;注意此代码编译不过。 #[derive…

ThreadLocal使用陷阱详解

引言 ThreadLocal是Java中实现线程隔离的一个重要工具&#xff0c;它为每个线程提供了独立的变量副本。但在使用过程中&#xff0c;如果不注意一些细节&#xff0c;很容易踩坑。本文将详细介绍ThreadLocal使用过程中的常见陷阱及其解决方案。 1. 内存泄漏问题 1.1 问题描述 …

H3C无线控制器二层注册典型配置举例

介绍AP与AC间通过二层网络完成注册的配置举例 组网需求 如图所示&#xff0c;集中式转发架构下&#xff0c;AC旁挂在L2 switch1上&#xff0c;L3 switch做DHCP server为AP、Client和Host分配IP地址。需要实现无线客户端Client通过AP连接到AC上&#xff0c;并能与有线客户端Hos…

Pygame实现记忆拼图游戏1

1 游戏介绍 记忆拼图游戏的英文名叫做“memory puzzle”&#xff0c;玩家通过记忆找到相同的图片&#xff0c;如图1所示。 图1 记忆拼图游戏 从图1中可以看出&#xff0c;玩家每次点击两张图片&#xff0c;如果这两个图片是相同的图案&#xff08;包括颜色和形状&#xff09;…

JVM 调优

在生产环境中&#xff0c;JVM 调优是确保 Java 应用程序性能和稳定性的重要步骤。调优的目标通常是减少垃圾回收的时间、降低内存使用和提高应用程序的吞吐量。以下是一些常见的 JVM 调优策略和方法。 选择合适的垃圾收集器 -XX:UseG1GC 调整堆内存大小&#xff0c;通过调整堆…

深度学习基础:线性代数的本质1——深入理解向量

目录 一、向量是什么 1. 从物理学角度 2. 从计算机专业角度 3. 从数学角度 4. 思考向量的特点方式 ① 向量是空间中的箭头 ② 向量是有序的数字列表 二、向量加法和向量相乘 1. 向量加法 2. 向量相乘 一、向量是什么 线性代数中最基础&#xff0c;最根源的组成部分。 …

Netty 连接存活检测——如何判断连接是否断开?

一.前言 最近碰到了一个需求&#xff0c;需要判断客户端与服务端之间的连接是否已经断开&#xff0c;查阅资料后发现Netty提供了如下几种方式&#xff0c;现总结如下&#xff0c;方便后续查看。 二.存活检测方式 2.1 SO_KEEPALIVE选项 Netty提供了SO_KEEPALIVE选项&#xf…