[算法][力扣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;
}
相关推荐
二年级程序员2 小时前
排序(五)“计数排序” 与 “各排序实际用时测量”
c语言·算法·排序算法
松☆2 小时前
C++ 程序设计基础:从 Hello World 到数据类型与 I/O 流的深度解析
c++·算法
Book思议-2 小时前
单链表应用:双指针【快慢指针】
数据结构
今儿敲了吗2 小时前
41| 快速乘
数据结构·c++·笔记·学习·算法
ysa0510302 小时前
树的定向(dfs并查集贪心)
数据结构·c++·笔记·算法·深度优先·图论
mjhcsp3 小时前
C++ A* 算法:启发式路径搜索的黄金标准
android·c++·算法
仰泳的熊猫3 小时前
题目2281:蓝桥杯2018年第九届真题-次数差
数据结构·c++·算法·蓝桥杯
blackicexs3 小时前
第九周第一天
数据结构·算法
小小怪7503 小时前
C++中的代理模式高级应用
开发语言·c++·算法