LeetCode 110. 平衡二叉树

LeetCode110平衡二叉树 算法特点及适用场景特点利用递归的思想巧妙地将判断二叉树是否为平衡二叉树的问题转化为计算子树高度并检查高度差的子问题,代码逻辑清晰简洁,符合二叉树这种具有递归结构的数据结构特点,易于理解和实现。通过在计算高度过程中及时标记不平衡的情况(返回 -1),能准确地判断二叉树是否满足平衡二叉树的定义。时间复杂度为 ,在节点数量不是特别庞大时,能够有效地判断二叉树的平衡性,但随着节点数增多,计算量增长相对较快,效率会有所下降。适用场景。 阅读详情

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过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 。

tips : 自顶向上法, 时间复杂度O(n), 空间复杂度O(n)(递归栈)

class Solution {
public:
    bool isBalancedRecursive(TreeNode* root, int & height) {
        int left_height = 0;
        int right_height = 0;
        if(root == NULL) {
            return true;
        }
        if(isBalancedRecursive(root->left, left_height) && isBalancedRecursive(root->right, right_height) && abs(left_height - right_height) <= 1 ) {
            height = max(left_height, right_height)+1;
            return true;
        } else {
            height = max(left_height, right_height)+1;
            return false;
        }
    }
    bool isBalanced(TreeNode* root) {
        int height = 0;
        return isBalancedRecursive(root, height);
    }
};
力扣(LeetCode) 110: 平衡二叉树 - 解法思路 给定一个二叉树,判断它是否是高度平衡的。高度平衡二叉树是指每个节点的两个子树的深度差不超过 1 的二叉树。对于每个节点,|左高度 - 右高度| ≤ 1左右子树也都是高度平衡的空树被认为是平衡的(高度 = 0)在一次遍历中同时计算高度和平衡状态。这避免了重复计算,并将时间复杂度从 O(n²) 降低到 O(n)。自底向上方法恰好访问每个节点一次,使其成为最优解决方案。 阅读详情

相关推荐

【简单】力扣算法题解析LeetCode110:平衡二叉树

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

ylumwd的博客 473

leetcode 110. 平衡二叉树 balanced binary tree

给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:示例 1: 示例 2:示例 3: 提示:思路是对二叉树做先序遍历,从底至顶返回子树最大高度,若判定某子树不是平衡树则 “剪枝” ,直接向上返回。算法流程: recur(root):isBalanced(root) :复杂度分析:思路是构造一个获取当前节点最大深度的方法 depth(root) ,通过比较此子树的左右子树的最大高度差abs(depth(root.left) - depth(root.right)),来判断此子树是否

we 666

手把手教你用MATLAB/Simulink模拟微电网潮流方向(附代码下载)

本文提供了一份详细的MATLAB/Simulink微电网潮流仿真实战指南。通过手把手教学,指导读者从零搭建包含光伏、储能和负荷的微电网模型,并模拟并网、孤岛等多种运行场景下的潮流方向变化。文章核心在于利用Simulink实现微电网的动态潮流分析与可视化,帮助工程师深入理解分布式能源系统中的功率平衡与控制策略。

weixin_28314575的博客 106

给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中, 一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两 个子树的高度差的绝对值不超过1

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

Light丶Long的博客 1953

高效低功耗设计:PMOS电子开关在墨水屏与ADC采样电路中的创新应用

本文深入探讨了PMOS电子开关在低功耗设计中的创新应用,特别是在墨水屏和ADC采样电路中的关键作用。通过详细分析PMOS的导通机制和近乎零静态功耗特性,展示了其在待机低功耗场景下的显著优势,并提供了实用的电路设计技巧和元器件选型建议,帮助工程师实现极致的功耗优化。

weixin_29193359的博客 161

NE555构成多谐振荡器及三角波、正弦波的生成(附工程文件)

NE555构成多谐振荡器及三角波、正弦波的生成 续上一篇:NE555基本原理及相关公式的推导

qq_49979053的博客 5万+

给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

1.给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 2.代码展示 /** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * s...

qq_41152046的博客 2513

AGV路径规划实战:如何用Python+ROS实现激光SLAM导航(附避障代码)

本文提供了一份基于Python和ROS实现AGV激光SLAM导航的实战指南。内容涵盖从Docker环境搭建、激光雷达数据处理、Gmapping建图,到Move_Base全局/局部路径规划与TEB局部规划器配置的全流程。重点解析了如何通过参数调优实现稳定导航,并附带了紧急避障代码,帮助开发者快速构建具备自主路径规划与实时避障能力的AGV系统。

pepsi的博客 1234

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] 1 / \ 2 2 / \ 3 3 ...

沙漏 530

YOLO26小目标检测实战:STAL标签分配+MuSGD优化,VisDrone数据集漏检率降50%

小目标检测是计算机视觉的经典难题,而VisDrone数据集小目标占比极高:数据集中小目标(像素面积<32×32)占比超过60%,且大量目标仅为几个像素,特征信息极度匮乏;背景复杂且干扰多:无人机航拍场景包含建筑物、树木、人群、车辆等复杂背景,小目标易被背景淹没;尺度变化与遮挡严重:同一目标在不同帧中尺度差异大,且小目标极易被其他目标遮挡;传统模型的固有缺陷标签分配策略(如ATSS、SimOTA)偏向大目标,小目标的正样本分配不足,导致模型对小目标不敏感;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1183

model_optimizer将pi05端到端延时进一步优化到68.13ms了

目前在保持灵活性和性能之间找到一个较好的平衡。vit, llm仍然使用onnx->trt_engine的路径,量化可以通过https://github.com/NVIDIA/Model-Optimizer.git支持。同时支持通过cutedsl手写算子进行进一步优化denoise因为步数多,kernel launch多,因此完全通过手写融合算子实现,将所有steps进行一次大的cuda graph capture.

happyAnger6的专栏 57

树--平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。truefalseroot = []true如果是直接采用计算树深度进行对比,无法满足题目要求,树内的每一个结点的每一个子树都必须满足平衡条件abs。

RXY24601的博客 191

基于opencv人脸识别实现课堂抬头率检测系统 完整代码 可直接运行 作为毕设

基于opencv人脸识别实现课堂抬头率检测系统 完整代码 可直接运行 作为毕设

机器学习深度学习业余选手 1146

力扣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

【论文汇总】Diffusion Models视频生成/视频编辑/可控视频生成/跨模态视频生成

本文总结了Diffusion Models视频生成领域相关的工作,目前共收录142篇,持续更新中。

沉迷单车的追风少年 1670

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LeetCode 力扣 110. 平衡二叉树

题目描述(简单难度) 判断一棵树是否是平衡二叉树,平衡二叉树定义如下: 它是一棵空树或它的左右两个子树的高度差的绝对值不超过 1,并且左右两个子树都是一棵平衡二叉树。 解法一 直接按照定义来吧,并且多定义一个求高度的函数,之前在 104 题 做过。 public boolean isBalanced(TreeNode root) { //它是一棵空树 if (root == ...

wind_liang的博客 508

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Leetcode110. 平衡二叉树

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

会流泪de鱼的博客 341

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

力扣第110题:平衡二叉树

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

weixin_48941116的博客 630

[每日一题]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] 1 / \

qq_42246695的博客 410

LeetCode110-平衡二叉树

LeetCode110-平衡二叉树 题目 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 解法 方法一:自顶向下递归 判断当前节点的左右子树是否是二叉平衡树,然后判断自身是否是二叉平衡树。 缺点:计算高度的函数会被重复调用 class Solution { public boolean isBalanced(TreeNode root) { if(root == null) retur

viva_la__vida的博客 179

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] 1 / ...

weixin_30702413的博客 216

LeetCode110. 平衡二叉树Golang版

LeetCode110. 平衡二叉树Golang版 1. 问题描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 2. 思路 2.1. 递归 确定递归函数参数和返回值 func isBalanced(root *TreeNode) bool 确定结束条件 if root == nil { return true } 确定单层递归逻辑 l := he

菜到不敢run 224

LeetCode 110.平衡二叉树

LeetCode 110.平衡二叉树 题目 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 / \

qq_42499133的博客 183

力扣110.平衡二叉树

平衡二叉树就是所有节点的左右子树的深度相差不超过1的二叉树,判断子树深度写到一个函数中,将判断左右子树是否平衡用一个函数实现,主函数中遍历二叉树判断该二叉树是否为平衡二叉树

2301_80505422的博客 378

【每日力扣Leetcode】110-判断一个二叉树是不是平衡二叉树

力扣题库110,判断一个二叉树是不是平衡二叉树。 题目链接点这里。 文章目录题目描述解题思路初始答案改进答案注意事项 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,

T型人小付的博客 442

leetcode 110.平衡二叉树

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

EngineerHe的博客 1366
上一篇: Leetcode 518. 零钱兑换 II
下一篇: LeetCode 程序员面试经典面试题 04.06. 后继者
wenkun97
博客等级 码龄10年 15粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值