前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >给定一个二叉树,判断它是否是高度平衡的二叉树。

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

作者头像
小雨的分享社区
发布于 2022-10-26 06:57:47
发布于 2022-10-26 06:57:47
22400
代码可运行
举报
文章被收录于专栏:小雨的CSDN小雨的CSDN
运行总次数:0
代码可运行

题目

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

解题思路

需要遍历计算出二叉树的深度,用左子树的最大深度减去右子树的最大深度的绝对值,如果结果大于1,那么就不是平衡二叉树,反之则为平衡二叉树。

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    //给定一个二叉树,找出其最大深度。
    //二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
    //说明: 叶子节点是指没有子节点的节点。
    public int maxDepth(TreeNode root) {
        if (root == null){
            return 0;
        }
        return 1 + Math.max(maxDepth(root.left),maxDepth(root.right));
    }

    //给定一个二叉树,判断它是否是高度平衡的二叉树。
    //本题中,一棵高度平衡二叉树定义为:
    //一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1
    public boolean isBalanced(TreeNode root) {
        if (root == null){
            return true;
        }
        if (root.left == null && root.right == null){
            return true;
        }
        int leftDepth = maxDepth(root.left);
        int rightDepth = maxDepth(root.right);
        if (leftDepth - rightDepth > 1 || rightDepth - leftDepth > 1){
            return false;
        }
        return isBalanced(root.left) && isBalanced(root.left);
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
二叉树刷题总结:二叉树的属性
这就需要去判断根节点下左子树与右子树里侧和外侧是否相等。比较的方法是拿左子树的 “左-右-中” 节点和右子树的“右-左-中”为顺序的节点做比较。
HelloWorld杰少
2022/08/04
3700
二叉树刷题总结:二叉树的属性
【数据结构】翻转、平衡、对称二叉树,最大深度、判断两棵树是否相等、另一棵树的子树
若要让时间复杂度为O(n),则需要在判断的过程中,只要发现左右俩树高度相差大于 1,就直接 return -1,不再进行后续判断了
椰椰椰耶
2024/10/15
1190
【数据结构】翻转、平衡、对称二叉树,最大深度、判断两棵树是否相等、另一棵树的子树
二叉树:我平衡么?
本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
代码随想录
2020/10/10
3340
二叉树:我平衡么?
二叉树专项练习
主要是分治思想,大事化小,把其化成带有根节点的A A的左子树,A的右子树 ,再分别判断左子树与右子树的最大深度, 取两者最大值+1即二叉树的最大深度
lovevivi
2022/11/10
1830
二叉树专项练习
二叉树节点的高度和深度,你区分开了么?
题目地址:https://leetcode-cn.com/problems/balanced-binary-tree/
代码随想录
2021/08/10
7.3K0
二叉树的前序遍历 、二叉树的最大深度、平衡二叉树、二叉树遍历【LeetCode刷题日志】
计算树的节点数: 函数TreeSize用于递归地计算二叉树中的节点数。如果树为空(即根节点为NULL),则返回0。否则,返回左子树的节点数、右子树的节点数和1(表示当前节点)的总和。
走在努力路上的自己
2024/01/26
3070
二叉树的前序遍历 、二叉树的最大深度、平衡二叉树、二叉树遍历【LeetCode刷题日志】
【算法总结】五道常见的算法-二叉树
前段时间,写了面试必备的一系列文章,反应还不错。有一些读者反馈说,能不能整理一些面试常见的算法。前段时间,我恰好总结了 LeetCode 常见的面试算法题目。
程序员徐公
2022/01/20
1.1K0
【算法总结】五道常见的算法-二叉树
树和二叉树基础
树的高度或深度:树中节点的最大层次,如上图:树的高度是4.(注意从1开始计数,同时也意味着空树就是0)
用户11316056
2024/10/16
890
树和二叉树基础
七十七、 二叉树的层次遍历和最大深度
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。(即逐层地,从左到右访问所有节点)。
润森
2022/08/17
5490
七十七、 二叉树的层次遍历和最大深度
二叉树的最大深度
使用前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。
用户11097514
2024/05/30
780
Leetcode No.110 平衡二叉树
示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:true
week
2021/05/06
2770
LeetCode通关:连刷三十九道二叉树,刷疯了!
大家好,我是拿输出博客来督促自己刷题的老三,这一节我们来刷二叉树,二叉树相关题目在面试里非常高频,而且在力扣里数量很多,足足有几百道,不要慌,我们一步步来。我的文章很长,你们 收藏一下。
三分恶
2021/09/08
8640
LeetCode-110. 平衡二叉树(java)
       根据本题对平衡二叉树的定义:如果二叉树的每个节点的左右子​​树的高度​​差的绝对值不超过 1,则是平衡二叉树。根据题目定义,解题思路如涌泉般喷发,老规矩,递归破题(若一棵二叉树是平衡二叉树,必须满足其所有子树也都是平衡二叉树才行),且递归的顺序可以是自顶向下或者自底向上,如上两种递归顺序我都给大家讲解一下。
bug菌
2023/05/27
2190
LeetCode-110. 平衡二叉树(java)
【LeetCode 110.平衡二叉树】两种递归实现:自顶向下、自底向上
本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。
心谭博客
2020/04/21
8610
平衡二叉树
题意 给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过 1。 样例 A) 3 B) 3 / \ \ 9 20 20 / \ / \ 15 7 15 7 二叉树 A 是高度平衡的二叉树,但是 B 不是。 思路 这道题利用了 二叉树的最大深度 这
一份执着✘
2018/06/04
7440
漫画:二叉树系列 第六讲(平衡二叉树)
今日偷懒,在家忙着码代码,所以就分享一道简单点的题目~在之前的系列中,我们已经学习了二叉树的深度以及DFS,如果不会可以先查看之前的文章。今天我们将对其进行应用,直接看题目:
程序员小浩
2020/03/30
3050
漫画:二叉树系列 第六讲(平衡二叉树)
Java集合与数据结构——二叉树02
我们将求二叉树的叶子节点数量这个问题,看成求 二叉树的 左子树的叶子节点 + 右子树的叶子节点
RAIN7
2022/03/29
1890
Java集合与数据结构——二叉树02
二叉树题目合集
用递归法 ,传入左右两棵树的根节点 ,然后比较 left.left == right.left; 以及 left.right ==right.right;
用户11097514
2024/05/30
810
剑指offer | 面试题42:平衡二叉树
思路:平衡二叉树的条件:左子树是平衡二叉树,右子树是平衡二叉树,左右子树高度不超过 1。
千羽
2022/02/23
4150
剑指offer | 面试题42:平衡二叉树
二叉树——110. 平衡二叉树
树中的节点数在范围 [0, 5000] 内 -104 <= Node.val <= 104
向着百万年薪努力的小赵
2022/12/02
2710
二叉树——110. 平衡二叉树
相关推荐
二叉树刷题总结:二叉树的属性
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验