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;
    }
}
相关推荐
ゞ 正在缓冲99%…10 分钟前
leetcode66.加一
java·数据结构·算法
潘多编程15 分钟前
JDK 17 与 Spring Cloud Gateway 新特性实践指南
java·开发语言
工业互联网专业17 分钟前
基于springboot+vue的悠扬乐器管理系统
java·vue.js·spring boot·毕业设计·源码·课程设计
贩卖黄昏的熊19 分钟前
JavaScript 笔记 --- part6 --- JS进阶 (part1)
java·javascript·笔记
Aqua Cheng.20 分钟前
华为开发岗暑期实习笔试(2025年4月16日)
java·算法·华为·动态规划
李菠菜26 分钟前
Spring Boot 集成 Jasypt 实现敏感信息加密保护
java·spring boot·后端
写bug写bug27 分钟前
Spring事务失效的9大场景,你踩过几个?
java·后端·spring
橙序员小站27 分钟前
并发编程太难写?这些新方法救了我🚀
java·面试
Thanwinde34 分钟前
为什么64位的JVM的对象头中的HashCode长度是31
java
小智疯狂敲代码35 分钟前
Spring MVC源码-核心架构与请求处理流程
java·面试