java练习(28)

ps:练习来自力扣

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

复制代码
// 定义二叉树节点类
class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode() {}
    TreeNode(int val) { this.val = val; }
    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

class Solution {
    public boolean isBalanced(TreeNode root) {
        return getHeight(root) != -1;
    }

    private int getHeight(TreeNode node) {
        // 如果当前节点为空,高度为 0
        if (node == null) {
            return 0;
        }
        // 递归计算左子树的高度
        int leftHeight = getHeight(node.left);
        // 如果左子树已经不平衡,直接返回 -1
        if (leftHeight == -1) {
            return -1;
        }
        // 递归计算右子树的高度
        int rightHeight = getHeight(node.right);
        // 如果右子树已经不平衡,直接返回 -1
        if (rightHeight == -1) {
            return -1;
        }
        // 判断当前节点的左右子树高度差是否超过 1
        if (Math.abs(leftHeight - rightHeight) > 1) {
            return -1;
        }
        // 如果当前节点平衡,返回其高度(左右子树最大高度加 1)
        return Math.max(leftHeight, rightHeight) + 1;
    }
}
相关推荐
han_hanker7 小时前
@Validated @Valid 用法
java·spring boot
小CC吃豆子7 小时前
详细介绍一下静态分析工具 SonarQube
java
DevOpenClub7 小时前
全国三甲医院主体信息 API 接口
java·大数据·数据库
言慢行善7 小时前
SpringBoot中的注解介绍
java·spring boot·后端
一勺菠萝丶7 小时前
管理后台使用手册在线预览与首次登录引导弹窗实现
java·前端·数据库
无巧不成书02187 小时前
Java包(package)全解:从定义、使用到避坑,新手零基础入门到实战
java·开发语言·package·java包
身如柳絮随风扬7 小时前
SpringMVC 异常处理?Spring 父子容器?
java·spring·mvc
鬼先生_sir7 小时前
Spring AI Alibaba 用户使用手册
java·人工智能·springai
有梦想的小何7 小时前
从0到1搭建可靠消息链路:RocketMQ重试 + Redis幂等实战
java·redis·bootstrap·rocketmq
大数据新鸟7 小时前
HashMap、Hashtable、ConcurrentHashMap 核心对比
java