[算法][力扣110]平衡二叉树

给定一个二叉树,判断它是否是 平衡二叉树

分析: 平衡二叉树的任意节点的左右子树高度差(平衡因子)绝对值不超过1

java 复制代码
public boolean isBalanced(TreeNode root) {
        int leftDeep = countDeep(root.left);
        int rightDeep = countDeep(root.right);
        return Math.abs((leftDeep - rightDeep)) <= 1 && isBalanced(root.left) && isBalanced(root.right);
    }

private int countDeep(TreeNode root) {
        // 递归跳出条件
        if (root == null) {
            return 0;
        }
        if (root.left == null && root.right == null) {
            return 1;
        }

        // 计算左右子树的节点个数
        int leftCount = countDeep(root.left);
        int rightCount = countDeep(root.right);

        // 左右子树节点的和 + 当前节点1
        return Math.max(leftCount, rightCount) + 1;
}
相关推荐
荆棘鸟智能20 分钟前
城市感知设备怎么统一接入?从多协议网关到设备模型的中间件架构设计
人工智能·算法·边缘计算
淡海水1 小时前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
Logic1011 小时前
C语言/数据结构位运算题解:异或XOR找出时尚聚会中的“独特颜色“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
INGNIGHT4 小时前
270 · 电话号码的字母组合II(Trie)
linux·算法
2401_839080544 小时前
C++常见八股
数据结构·c++·算法
青山是哪个青山5 小时前
LeetCode 188:买卖股票的最佳时机 IV
算法
暮雨封夕5 小时前
跳表(Skip List)详解:原理、实现、使用场景与实际应用
数据结构
mikuyyds5 小时前
geo-toolbox 插件算法解析:RUSLE 与 MUSLE 的工程化落地
算法·rust·gis
Tisfy5 小时前
LeetCode 3498.字符串的反转度:一次遍历
leetcode·字符串·题解·遍历
a187927218315 小时前
【算法】树(二):队列与祖先——BFS 骨架三配件、短路透传与合流
算法·leetcode·二叉树··bfs·算法讲解·树遍历