[路飞]_leetcode-110-平衡二叉树

简介: leetcode-110-平衡二叉树

网络异常,图片无法展示
|


「这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战


[题目地址][B站地址]


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


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


一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 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,所以这里我们通过递归进行该操作。


在递归向下的过程中求的每个子树的高度,回溯的过程中获取当前节点的左右子树的高度,判断高度差即可。


如果高度差大于1,这里我们的返回值有一个小技巧。


如果返回false,那我们在回溯的过程中就要处理返回值是非负整数还是 false 的情况,这会给我们带来额外的复杂度,我们这里可以利用当高度差大于1返回一个极大值这种技巧,来统一我们的返回值类型。


因为题意给我们一个信息是树的节点数范围是 [0, 5000] 内,所以这里返回 10000,也就是双倍的树高即可保证这个数值是肯定超过正常的树高的


至此,我们本题的解题思路就完成了,代码如下


var isBalanced = function(root) {
    function getHeight(root){
        if(root === null) return 0;
        const l = getHeight(root.left),
        r = getHeight(root.right);
        if(Math.abs(l-r)>1) return 10000;
        return Math.max(l,r)+1;
    }
    return getHeight(root)<10000
};
复制代码


至此,我们就完成了leetcode-110-平衡二叉树


如有任何问题或建议,欢迎留言讨论!

相关文章
|
2月前
【LeetCode 33】110.平衡二叉树
【LeetCode 33】110.平衡二叉树
17 1
|
7月前
leetcode代码记录(平衡二叉树
leetcode代码记录(平衡二叉树
43 0
|
4月前
|
算法 Java 关系型数据库
leetcode110-平衡二叉树
文章通过LeetCode第110题"平衡二叉树"的解题过程,深入讲解了平衡二叉树的定义、树的高度概念,并提供了使用后序遍历算法判断二叉树是否平衡的Java代码实现,强调了理解理论知识和实践编码的重要性。
|
4月前
|
Python
【Leetcode刷题Python】110. 平衡二叉树
LeetCode第110题"平衡二叉树"的Python解决方案,通过计算二叉树的高度并判断任意两个子树的高度差是否不超过1来确定树是否平衡。
29 2
|
6月前
|
SQL 算法 数据挖掘
力扣110:平衡二叉树
力扣110:平衡二叉树
|
算法
【LeetCode题目详解】(五)144.二叉树的前序遍历、94.二叉树的中序遍历、145.二叉树的后序遍历、104.二叉树的最大深度、110.平衡二叉树
【LeetCode题目详解】(五)144.二叉树的前序遍历、94.二叉树的中序遍历、145.二叉树的后序遍历、104.二叉树的最大深度、110.平衡二叉树
56 0
LeetCode | 110. 平衡二叉树
LeetCode | 110. 平衡二叉树
|
7月前
|
Java C++ Python
leetcode-110:平衡二叉树
leetcode-110:平衡二叉树
51 0
LeetCode刷题Day14——二叉树(完全二叉树、平衡二叉树、二叉树路径、左叶子之和)
一、完全二叉树的节点个数 题目链接:222. 完全二叉树的节点个数
|
算法
代码随想录算法训练营第十七天 | LeetCode 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和
代码随想录算法训练营第十七天 | LeetCode 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和
50 0