二叉树题目

embedded/2025/3/16 5:47:25/

二叉树每层最大值

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/embedded/172978.html

相关文章

智慧加油站小程序数据库设计文档

智慧加油站系统 - 数据库与API设计文档 1. 数据库设计 1.1 ER模型 系统的核心实体关系如下&#xff1a; 用户(User) ---< 订单(Order) ---< 加油记录(RefuelRecord)| | || | vv v …

清华北大推出的 DeepSeek 教程(附 PDF 下载链接)

清华和北大分别都有关于DeepSeek的分享文档&#xff0c;内容非常全面&#xff0c;从原理和具体的应用&#xff0c;大家可以认真看看。 北大 DeepSeek 系列 1&#xff1a;提示词工程和落地场景.pdf  北大 DeepSeek 系列 2&#xff1a;DeepSeek 与 AIGC 应用.pdf  清华 Deep…

MindGYM:一个用于增强视觉-语言模型推理能力的合成数据集框架,通过生成自挑战问题来提升模型的多跳推理能力。

2025-03-13&#xff0c;由中山大学和阿里巴巴集团的研究团队提出了MindGYM框架&#xff0c;通过合成自挑战问题来增强视觉-语言模型&#xff08;VLMs&#xff09;的推理能力。MindGYM框架通过生成多跳推理问题和结构化课程训练&#xff0c;显著提升了模型在推理深度和广度上的表…

docker拉取 sentinel 并启动

拉取镜像 docker pull bladex/sentinel-dashboard:latest # 默认拉取最新版启动镜像 访问 账号 密码都是默认的 sentinel

HAL库STM32常用外设—— CAN通信(一)

文章目录 一、CAN是什么&#xff1f;1.1 CAN应用场景1.2 CAN通信优势 二、CAN基础知识介绍2.1 CAN总线结构2.2 CAN总线特点2.2.1 CAN总线的数据传输特点2.2.2 位时序和波特率 2.3 CAN位时序和波特率2.3 CAN物理层2.3.1 CAN 物理层特性2.3.2 CAN 收发器芯片介绍 2.4 CAN协议层2.…

JAVA字符串与正则表达式

文章目录 写在前面1、String1.1、String底层实现1.2、str"abc"和new String("abc")的区别1.3、使用拼接字符串1.4、如何使用String.intern节约内存1.5、分割字符&#xff0c;split()和indexOf()用哪个 2、正则表达式2.1、DFA和NFA2.2、怎么减少回溯? 写在…

微店平台商品关键字搜索接口调用指南:Python代码实现与实战解析

一、接口概述 微店开放平台提供商品搜索API接口&#xff0c;支持通过关键字检索店铺商品信息。本接口采用RESTful风格设计&#xff0c;支持OAuth2.0认证&#xff0c;返回标准JSON格式数据。 获取key和secret 二、准备工作 注册微店开放平台开发者账号 创建应用并获取以下凭证…

《C#上位机开发从门外到门内》2-5:USB通信

文章目录 一、引言二、USB通信概述2.1 USB基本原理2.2 USB协议栈与数据传输流程 三、USB通信模式详解3.1 HID通信模式3.1.1 HID简介3.1.2 工作原理与数据结构3.1.3 应用场景 3.2 CDC通信模式3.2.1 CDC简介3.2.2 工作原理与数据传输3.2.3 应用场景 3.3 Bulk传输模式3.3.1 Bulk传…