【树-简单】面试题 04.04. 检查平衡性

面试题 04.04. 检查平衡性 这道题考察了递归思维和剪枝优化能力。在递归过程中顺便收集信息,减少不必要的重复工作。一句话总结:递归中断 + 高度同时返回,是高效判断平衡树的关键。如何不用递归,用迭代的方法写?怎么在判断平衡的同时构造平衡树?可以继续留言,我可以继续扩展分享! 阅读详情

【题目】
实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 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 。
【代码】
【方法1】
在这里插入图片描述

class Solution:
    def visit(self,root):
        if not root:
            return 0
        L=self.visit(root.left)
        R=self.visit(root.right)
        if abs(L-R)>1:
            self.flag=False
        return max(L,R)+1
    def isBalanced(self, root: TreeNode) -> bool:
        self.flag=True
        self.visit(root)
        return self.flag

【方法2】
在这里插入图片描述

class Solution:
    def visit(self,root):
        if not root:
            return 0
        L=self.visit(root.left)
        R=self.visit(root.right)
        if abs(L-R)>1 or L==-1 or R==-1:
            return -1
        return max(L,R)+1
    def isBalanced(self, root: TreeNode) -> bool:        
        return self.visit(root)>=0

【方法3】
在这里插入图片描述

class Solution:
    def isBalanced(self, root: TreeNode) -> bool:        
        def height(root):
            if not root:
                return 0
            return max(height(root.left),height(root.right))+1
        if not root:
            return True
        return abs(height(root.left)-height(root.right))<=1 and self.isBalanced(root.left) and self.isBalanced(root.right)
uniapp(安卓苹果APP端):解决video组件播放视频卡顿,视频一直加载非常缓慢或加载不出来解决方案,解决多个video组件视频播放很卡一直加载非常慢怎么办(无论真机调试还是本地测试都完美搞定) uni-app APP端video组件播放视频卡顿,uniapp video app 加载不出来解决方案,uniapp app使用video视频播放卡顿,uni-app APP端video组件播放视频卡顿_uniapp video老是加载,uniapp开发app视频在真机上卡顿,安卓app播放视频很卡,苹果ios真机运行播放视频加载很慢怎么办,解决UniApp中MP4视频播放卡顿问题,解决m3u8视频播放很卡的问题,uniapp 使用video组件,部分视频加载非常慢,uniapp视频播放卡顿,安卓视频播放 阅读详情

相关推荐

Springboot计算机毕业设计校园树洞微信小程序【附源码】开题+论文+mysql+程序+部署

因此,开发一款专门针对校园用户的树洞微信小程序,为学生提供一个安全、私密、便捷的倾诉和交流平台,具有重要的现实意义和应用价值。通过本研究的实施,我们预期能够开发出一款功能全面、操作便捷的校园树洞微信小程序,为校园师生提供一个安全、私密、便捷的倾诉和交流平台。此外,通过不断优化和改进小程序的功能和服务,我们预期能够提升用户体验和满意度,推动校园树洞小程序的持续发展,并为校园生活的和谐与健康发展做出积极贡献。同时,通过不断优化小程序的功能和服务,提升用户体验和满意度,推动校园树洞小程序的广泛应用和持续发展。

光冯毕设程序 1666

AVL平衡二叉搜索树 (介绍+例题)

An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this property. Figures 1-4 illustrate t

qq_51738428的博客 5694

基于Java+SpringBoot+Vue的中小企业设备管理系统的设计与开发(源码+lw+部署文档+讲解等)

💗博主介绍:✌新人博主,工作经验两年+、专注于Java、小程序技术领域和毕业项目实战✌💗🌟文末获取源码+数据库🌟

2301_76502068的博客 1383

面试题-03:AVL树_红黑树_哈希表

文章目录1、红黑树的查找时间复杂度1. 平衡二叉搜索树2. 自平衡二叉搜索树(AVL树)4. B树5. 红黑树 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 阿里面试题1 阿里面试题2 阿里面试题3 阿里面试题4 腾讯面试题1 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 下面根据上面的5个面经整理了有关集合常考的面试题,删除线是现在...

你今天真好看呀 1420

WRF替换静态地理数据中的土地利用数据(WRF替换下垫面数据)

   在进行自己的WRF项目模拟的时候,因为需要用中国土地利用数据替换WRF内嵌老旧的土地利用数据,故需要将土地利用进行替换。我使用的中国的土地利用数据是来自中国土地利用数据(1980-2015)。其中我以下载的lucc1980为例进行演示。 1、坐标转换    (1)下载的lucc1980数据如下图所示:    (2)在ArcMap中打开如下图所示: 打开属性表可以看到,lucc1980的坐标系为投影坐标系Krasovsky_1940_Albers,数据格式为GRID。这里需要将投影坐标系转换成地理坐

GIS 1万+

从零到一:手把手教你用STM32F103C8T6打造个人专属开发板(附立创EDA工程与源码)

本文详细介绍了如何使用STM32F103C8T6微控制器从零开始设计和制作个人专属开发板。内容涵盖硬件选型、原理图设计、PCB布局、功能验证等全流程,并提供了立创EDA工程文件和源码,帮助开发者深入理解STM32开发板的硬件架构与设计要点。

weixin_26802933的博客 285

数据结构(陈越)PAT练习题 第四周:树(下)

04-1. Root of AVL Tree (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue An AVL tree is a self-balancing binary sea

疯狂的芒果 博客 1667

《ESP32单片机基础入门》第2章:开发环境搭建

【代码】《ESP32单片机基础入门》第2章:开发环境搭建。

2301_79143213的博客 581

二叉平衡树(AVLTree)

本文详细讲解了,AVL树的插入,以及在插入时,树是如何旋转并更新平衡因子的。还有完整的代码实现,创作不易,希望对大家有帮助。如果有错误换,欢迎大家的指出

qq_52568001的博客 1127

YOLOv8 更换损失函数DIoU、EIoU、GIoU...Inner-IoU...

介绍了一些损失函数,并将其应用到yolov8训练中

分享一些自己改进代码的实例 888

【100%通过率】华为OD机试真题 Java&Go 实现【查找单入口空闲区域】【2022.11 Q4 新题】

给定一个 m xn 的矩阵,由若干字符 和0构成,X表示该处已被占据,0"表示该处空闲,请找到最大的单入口空闲区域.解释:空闲区域是由连通的O组成的区域,位于边界的0可以构成入口,单入口空闲区域即有目只有一个位于边界的0作为入口的由连通的'O"组成的区域。 如果两个元素在水平或垂直方向相邻,则称它们是“连通”的。

MISAYAONE的博客 2万+

平衡二叉树(AVL树)(算法笔记)

在上一节中,我们认识到了如果已知序列是一个有序序列,那么生成的BST将是一条链,查找的复杂度会达到O(n),这样就无法实现BST对数据查询优化的目的。所以AVL树就诞生了,其目的是为了使BST的高度在每次插入元素后仍然能保持O(logn)的级别,在建立BST的过程中,通过增加平衡调整功能,使任意结点的左子树和右子树的高度之差的绝对值不超过1,其中左子树与右子树的高度之差称为该结点的平衡因子。

Arabot_的博客 451

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【LeetCode刷题(简单程度)】面试题 04.04. 检查平衡性(树)

实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 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 。 来源:力扣(Lee...

qq_33197518的博客 248

VC中sqlite的使用

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LeetCode面试题04 检查平衡性

二叉树,一种由节点组成的树形数据结构,每个节点最多有两个子节点,分别称作左子节点和右子节点。而平衡二叉树,可不是普通的二叉树,它有着严苛的要求:对于树中的任意一个节点,其两棵子树(左子树和右子树)的高度差不能超过 1。这个定义看似简单,实则暗藏玄机,它关乎二叉树的查找效率、稳定性等诸多性能指标。想象一下,如果一棵二叉树极度不平衡,就如同瘸腿走路,某些操作的耗时会大幅增加,效率大打折扣。举个例子,在一棵平衡二叉搜索树里,查找一个元素的时间复杂度接近O(可要是树失衡了,最坏情况下查找时间复杂度能退化成O(

qq_64604732的博客 2055

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

二叉树系列-Leetcode 面试题 04.04. 检查平衡性

文章目录问题描述解题报告实现代码参考资料 问题描述 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。 解题报告 这种二叉树问题,首先考虑递归。树是天然的递归结构,左节点是树,右节点也是树。 所以满足以root为根的树是具有平衡性的话: 左子树需要满足平衡性; 右子树亦需满足平衡性; 同时左子树与右子树的高度差在1以内。 实现代码 /** * Definition for a binary tree node. * struct Tree

MD 357

面试题 04.04. 检查平衡性 (递归)

LeetCode: 面试题 04.04. 检查平衡性 递归回溯 剑指 Offer 有一道这样的题 不会写了, 而且一开始还记错了写法。。 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Sol

lankerens 577

LeetCode-检查平衡性

题目要求 原题链接:面试题 04.04. 检查平衡性 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 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

快乐学术猿 195

04.04 检查平衡性

原题目 面试题 04.04. 检查平衡性 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 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 返

Cigar 224

LeetCode面试题 04.04. 检查平衡性

LeetCode 面试题 04.04. 检查平衡性 原题链接 题目描述 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,...

Ember_Sky 900

【面试题 04.04】 检查平衡性

题目描述:(来源于力扣) 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。 解题思路 1)递归求解每个节点的高度,关键在于父节点和子节点的高度值之间的关系; 2)计算平衡因子; 3)计算平衡性,使用递归求解每一个节点的平衡因子; 如果缺少最后的递归左右子树,就会导致只计算了根节点的平衡因子,其他节点的平衡因子都没有计算。 代码 /...

喜欢吃冰棍de谷利文君的博客 360

简单-LeetCode 面试题 04.04.检查平衡性

题目 来源:检查平衡性 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。 示例 解题思路及代码 1. 思路 总的思路来说,对于二叉树中的每个结点,我们需要得到其左右子树的高度并进行比较,只要出现某个结点,其左右子树的高度相差超过1的情况,则该二叉树不是平衡树。 2. 代码 var isBalanced = function(root) { if (root == null) { return true; }

weixin_43912756的博客 326

C++算法学习(力扣:面试题 04.04 检查平衡性)

力扣:面试题 04.04 检查平衡性 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 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

weixin_45743162的博客 304

力扣 面试题 04.04. 检查平衡性

面试题 04.04. 检查平衡性 难度简单10收藏分享切换为英文关注反馈 实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 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 /

qq_41723573的博客 217

leetcode 面试题 04.04. 检查平衡性

实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 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 。 来源:力扣(Lee...

qinian_ztc的博客 352

leetcode 面试题 04.04. 检查平衡性 基础dfs

实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 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 。 来源:力扣(LeetCode) 链接:https://le

马角的逆袭的博客 196
上一篇: 【树-简单】572. 另一棵树的子树
下一篇: 【树-简单】110. 平衡二叉树
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值