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;
    }
}
相关推荐
二月夜1 小时前
剖析Java正则表达式回溯问题
java·正则表达式
xuhaoyu_cpp_java1 小时前
项目学习(三)分页查询
java·经验分享·笔记·学习
程序员二叉2 小时前
【Java】集合面试全套精讲|HashMap/ArrayList高频考点完整版
java·面试·哈希算法
cfm_29142 小时前
JVM GC垃圾回收初步了解
java·开发语言·jvm
心之伊始2 小时前
LangChain4j RAG 实战:Java 后端如何把本地文档接入 Embedding 检索链路
java·架构·源码分析·csdn
许彰午3 小时前
17_synchronized关键字深度解析
java·开发语言
Xzh04234 小时前
AI Agent 学习路线(Java 后端方向)
java·人工智能·学习
艾利克斯冰5 小时前
Java 设计模式-行为型模式(更新中)
java·开发语言·设计模式
倒霉蛋小马5 小时前
Java新特性:record关键字
java·开发语言
折哥的程序人生 · 物流技术专研5 小时前
《Java 100 天进阶之路》第95篇:消息队列基础(RocketMQ/Kafka)(2026版)
java·面试·kafka·rocketmq·java-rocketmq·求职招聘