【LeetCode: 110. 平衡二叉树 + 二叉树】

力扣(LeetCode) 110: 平衡二叉树 - 解法思路 给定一个二叉树,判断它是否是高度平衡的。高度平衡二叉树是指每个节点的两个子树的深度差不超过 1 的二叉树。对于每个节点,|左高度 - 右高度| ≤ 1左右子树也都是高度平衡的空树被认为是平衡的(高度 = 0)在一次遍历中同时计算高度和平衡状态。这避免了重复计算,并将时间复杂度从 O(n²) 降低到 O(n)。自底向上方法恰好访问每个节点一次,使其成为最优解决方案。 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🚩 题目链接

⛲ 题目描述

给定一个二叉树,判断它是否是 平衡二叉树,平衡二叉树 是指该树所有节点的左右子树的深度相差不超过 1。

示例 1:
在这里插入图片描述

输入:root = [3,9,20,null,null,15,7]
输出:true
示例 2:
在这里插入图片描述

输入:root = [1,2,2,3,3,null,null,4,4]
输出:false
示例 3:

输入:root = []
输出:true

提示:

树中的节点数在范围 [0, 5000] 内
-104 <= Node.val <= 104

🌟 求解思路&实现代码&运行结果


⚡ 二叉树

🥦 求解思路
  1. 如果一棵二叉树是平衡二叉树,那么所有子树也都是平衡二叉树,可以使用递归的方式判断二叉树是不是平衡二叉树。
  2. 通过递归来判断判断当前左子树和右子树的高度是否小于1,并且左子树、右子树是否是平衡二叉树,如果满足,返回true,否则, 返回false。
  3. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
/**
 * 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 boolean isBalanced(TreeNode root) {
        if (root == null) {
            return true;
        }
        return Math.abs(process(root.left) - process(root.right)) <= 1 && isBalanced(root.left)
                && isBalanced(root.right);
    }

    public int process(TreeNode root) {
        if (root == null)
            return 0;
        return Math.max(process(root.left), process(root.right)) + 1;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

【简单】力扣算法题解析LeetCode110:平衡二叉树 本文介绍了一种高效的算法来判断二叉树是否平衡。平衡二叉树的定义是每个节点的左右子树高度差不超过1,且所有子树都平衡。 算法思路:采用自底向上的递归方法(DFS),通过计算子树高度并检查平衡性来优化效率。若子树不平衡,立即返回-1提前终止递归。时间复杂度为O(n),空间复杂度为O(h)。 代码实现:主函数isBalanced调用辅助函数height计算高度,若返回值不为-1则树平衡。height函数递归计算子树高度并检查平衡性,不平衡时返回-1,否则返回当前节点高度。 优化点:通过提前终止递归避免无效计算,提 阅读详情

相关推荐

PV-RCNN实战:如何在KITTI数据集上实现3D目标检测(附完整代码解析)

本文提供了在KITTI数据集上实战PV-RCNN 3D目标检测的完整指南,涵盖环境配置、数据预处理、模型训练与评估全流程。通过详细的代码解析和调参技巧,帮助读者掌握这一融合点与体素优势的经典3D目标检测模型,并实现从理论到实践的跨越。

weixin_29098391的博客 403

【LeetCode: 680. 验证回文串 II + 贪心 + 边界处理】

【LeetCode: 680. 验证回文串 II + 贪心 + 边界处理】给你一个字符串 s,最多 可以从中删除一个字符。 请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。

Coder_ljw的博客 1135

【护网行动-红蓝攻防】第一章-红蓝对抗基础 认识红蓝紫

军事上的演练,是除了实战以外最能检验军队战斗力的一种考核方式,他可以模拟面对外部势力的攻击时候,如何更好的去维护国家和主权的安全。同样的,在网络上面,真实环境下的网络攻防演练也是检验一个单位,企业网络防御能力,发现潜在危险最好的方法。1.政策要求2安全威胁驱动当前,我国关键信息基础设施面临的网络安全形势严峻复杂,网站平台大规模数据泄露事件频发,生产业务系统安全隐患突出,甚至有的系统长期被控面对高级持续性的网络攻击,防护能力十分欠缺。目前,我国面临的网络安全威胁主要有以下几点。

wxh的博客 1571

mysql必知必会样例表_《SQL必知必会》笔记1-样例表说明及建表语句

该笔记整理自Ben Forta著,钟鸣、刘晓霞译,人民邮电出版社出版的《SQL必知必会》第4版,具体内容有部分省略。关于存储过程的部分内容,结合了《SQL必知必会》和《MySQL必知必会》。代码测试环境:Win7-64bit、MySQL 5.7、MySQL Workbench 6.3。1 样例表解释说明书中所用的表是一个玩具经销商使用的订单录入系统的组成部分,包括:管理供应商Vendors。管理...

weixin_42467457的博客 2008

黑猫带你学UFS协议第13篇:UFS初始化详解(Boot Operation)

本文详细解析了UFS设备的初始化过程,包括部分初始化、加载启动代码(可选)和初始化完成三个阶段。重点介绍了如何通过设备描述符和逻辑单元描述符配置引导特性,以及如何从UFS设备加载启动代码。内容适用于嵌入式硬件和存储领域的开发者。

黑猫奥利奥的博客 3554

uniapp - 强力解决H5网页浏览器跨域问题,如何解决uniapp请求接口在浏览器跨域问题,UniApp H5 跨域代理配置详细教程完美解决所有uniapp跨域(调用第三方接口或服务器api跨域)

uni-app 跨域,uniApp解决h5跨域问题,解决uni-app请求接口在浏览器跨域问题,uni.request请求跨域问题解决方案,uni-app-跨域解决方法,彻底解决uniapp发布为H5的跨域问题,uniapp H5页面设置跨域请求_uniapp h5跨域配置,uniapp开发 H5 解决跨域问题,uniApp请求解决跨域问题,uniapp request如何实现前端请求跨域,解决uniapp调试过程中的请求跨域和环境配置,Uniapp调用外部api接口跨域请求,uni-app发布H5页面跨域

🏆 前端领域优质创作者 5352

2225 找出输掉零场或一场比赛的玩家(哈希表)

1. 问题描述: 给你一个整数数组 matches 其中 matches[i] = [winneri,loseri] 表示在一场比赛中 winneri 击败了 loseri 。返回一个长度为 2 的列表 answer : answer[0] 是所有没有输掉任何比赛的玩家列表。 answer[1] 是所有恰好输掉一场比赛的玩家列表。 两个列表中的值都应该按递增顺序返回。 注意: 只考虑那些参与至少一场比赛的玩家。 生成的测试用例保证不存在两场比赛结果相同 。 示例 1: 输入:matches = [[.

二哈 969

ABAP 里的 XML 与 JSON 处理,一套从接口落地到 Clean Core 的完整参考

ABAP 里的 XML 和 JSON 处理并不只是几段工具类调用。iXML、sXML、、XCO、、code page conversion、GZIP、对象序列化,这些能力背后对应的是不同的数据规模、访问模式、接口契约和运行时边界。小报文、复杂树结构、需要修改节点,iXML 很顺手。大报文、顺序读写、内存敏感,sXML 更可靠。ABAP 结构和 XML、JSON 之间要做标准转换,是主干。现代 JSON API、ABAP Cloud、命名转换,XCO 值得优先考虑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 223

【前缀和】1456.定长子串中元音的最大数目

这个官方题解采用了滑动窗口的方法来解决问题。通过维护一个固定大小的窗口,我们可以在O(n)的时间复杂度内找到最长连续元音字符的子串。在实际编程中,可以根据具体需求对这个解法进行优化,例如在字符串中只包含元音字符的情况下,可以进一步优化时间复杂度。

进一步有一步的欢喜 408

飞牛NAS新增虚拟机功能,如果使用虚拟机网卡直通安装ikuai软路由(如何解决OVS网桥绑定失败以及打开ovs后无法访问飞牛nas等问题)

飞牛NAS新增虚拟机功能,如果使用虚拟机网卡直通安装ikuai软路由

XiaoqiangClub的博客 1万+

Qt和FFmpeg的视频压缩工具

m_progressDialog = new QProgressDialog("正在压缩视频...", "取消", 0, 100, parent);QString file = QFileDialog::getOpenFileName(this, "选择视频文件", "",QString file = QFileDialog::getSaveFileName(this, "保存压缩文件", "",QMessageBox::warning(parent, "错误", "请设置输入和输出文件路径");

寒寒豆豆软件公司的博客 101

牛客NC406#最长山脉#Java版#一次循环搞定#代码性能O(n)

牛客NC406#最长山脉#Java版#一次循环搞定#代码性能O(n)

个人程序员-猴嗨哦-的博客 616

YOLO26改进策略【YOLO和Mamba】| CVPR 2025:EfficientViM 压缩隐藏状态空间进行通道混合、单头设计减少内存操作,提升目标检测效率与精度

本文记录的是利用模块优化的目标检测网络模型。EfficientViM Block(基于隐藏状态混合器的状态空间对偶性模块) 的设计旨在,提升特征提取效率,同时兼顾全局依赖捕捉与局部细节保留。本文将深入研究的原理,并将其应用到中,通过重构特征提取流程、减少内存绑定操作、融合多阶段特征,增强模型在资源受限环境下的检测性能与速度。EfficientViM: Efficient Vision Mamba with Hidden State Mixer based State Space DualityEfficie

Limiiiing的博客 397

力扣第110题:平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。:一个二叉树,若每个节点的左右子树的高度差的绝对值不超过1,则该树是高度平衡的。

weixin_48941116的博客 630

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Leetcode110(力扣110):平衡二叉树

class Solution { bool balanced=true; int dfs(TreeNode* root) { if(!root) return 0; int l=dfs(root->left); int r=dfs(root->right); if(abs(l-r)>1) balanced=false; return 1+max(l,r); } public: .

weixin_44537258的博客 182

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Leetcode:110.平衡二叉树

Leetcode:110.平衡二叉树 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / 9 20 / 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,4...

liamzhao13的博客 175

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

解题思路-LeetCode第110题:平衡二叉树

解题思路-LeetCode第110题:平衡二叉树 题目描述: 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,4,4]

weixin_48153141的博客 523

力扣110--平衡二叉树-java

力扣110–平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / 9 20 / 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 / 4 4 返回 false 。 通过次数117,289提交次数

Jacksonfan1的博客 353

LeetCode第110题:平衡二叉树

LeetCode第110题:平衡二叉树 问题描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / 9 20 / 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null...

朕蹲厕唱忐忑的博客 276

leetcode-110:平衡二叉树

leetcode-110:平衡二叉树题目解答方法一:递归 题目 题目链接 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:true 示例 2: 输入:root = [1,2,2,3,3,null,null,4,4] 输出:false 示例 3: 输入:root = [] 输出:true 提示: 树中的节点数

菊头蝙蝠的博客 362

leetcode110:判断平衡二叉树(两种思路对比)

LeetCode 110题要求判断一棵二叉树是否是平衡二叉树。平衡二叉树的定义是每个节点的左右子树高度差不超过1。文章分析了两种解法:第一种是自顶向下的递归方法,通过分别计算左右子树高度并递归判断子树平衡性,但存在重复计算问题,时间复杂度为O(N²)。第二种是优化的自底向上递归方法(后序遍历),在计算高度的同时检查平衡性,使用特殊返回值-1标记不平衡子树,实现剪枝效果,时间复杂度优化至O(N)。两种方法对比显示,自底向上方法更高效,避免了重复遍历节点。

lyh2004_08的博客 1291

【算法刷题day17】Leetcode:110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

暂无回溯大法好二叉树递归还得多学学多思考代码随想录解析257. 二叉树的所有路径代码随想录解析404.左叶子之和代码随想录解析。

qq_45022758的博客 422

力扣:110. 平衡二叉树

题目链接:110. 平衡二叉树 题目: 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1 。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:true 示例 2: 输入:root = [1,2,2,3,3,null,null,4,4] 输出:false 示例 3: 输入:root = [] 输出:true 提示: 树中的节点数在范围 [0, 5000] 内

qq_46111138的博客 363

LeetCode 110:平衡二叉树

平衡二叉树 题目描述: 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:true 示例 2: 输入:root = [1,2,2,3,3,null,null,4,4] 输出:false 示例 3: 输入:root = [] 输出:true 链接: 110....

zxl1990_ok的博客 326

力扣 LeetCode 110. 平衡二叉树(Day8:二叉树)

等于 -1 时,直接 return -1。

qq_61504864的博客 340

【LeetCode】第110题——平衡二叉树(难度:简单)

【LeetCode】第110题——平衡二叉树(难度:简单)题目描述解题思路代码详解注意点 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:true 示例 2: 输入:root = [1,2,2,3,3,null,null,4,4] 输出:false 示例 3: 输入:root = [] 输出:tr

Se7en_Dayz的博客 308
上一篇: 【LeetCode: 3258. 统计满足 K 约束的子字符串数量 I + 模拟】
下一篇: 【LeetCode: 3249. 统计好节点的数目 + 二叉树】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值