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;
    }
}
相关推荐
ZePingPingZe4 分钟前
Spring Boot常见注解
java·spring boot·后端
星辰烈龙5 分钟前
黑马程序员Java基础8
java·开发语言
毕设源码-郭学长7 分钟前
【开题答辩全过程】以 公司考勤系统为例,包含答辩的问题和答案
java
SimonKing7 分钟前
镜像拉不下来怎么办?境内Docker镜像状态在线监控来了
java·后端·程序员
a程序小傲8 分钟前
华为Java面试被问:SQL执行顺序
java·后端·sql·华为·面试
中文很快乐17 分钟前
java后端好习惯---新手养成记
java·开发语言·开发好习惯·踩坑日志·新手养成
Acc1oFl4g17 分钟前
Java安全之SpEL表达式注入入门学习
java·学习·安全
风华同学17 分钟前
【系统移植篇】系统烧写
java·开发语言·前端
武哥聊编程18 分钟前
【从0带做】基于Springboot3+Vue3的生态养殖管理系统
java·学习·vue·毕业设计·springboot
隔山打牛牛19 分钟前
如何实现jvm中自定义加载器?
java