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;
    }
}
相关推荐
小鹭同学_23 分钟前
Java基础 Day28 完结篇
java·开发语言·log4j
椰椰椰耶1 小时前
[网页五子棋][匹配模块]实现胜负判定,处理玩家掉线
java·开发语言·spring boot·websocket·spring
on the way 1231 小时前
结构性设计模式之Flyweight(享元)
java·设计模式·享元模式
K____End2 小时前
Spring 中的disposableBean介绍
java·spring·rpc
噼里啪啦啦.2 小时前
SpringBoot统一功能处理
java·spring boot·后端
Bruk.Liu2 小时前
《IDEA 高效开发:自定义类/方法注释模板详解》
java·ide·intellij-idea·注释
叶 落2 小时前
[Java 基础]选英雄(配置 IDEA)
java·ide·intellij-idea
陈丹阳(滁州学院)2 小时前
解决idea编译运行项目时间长的问题
java·intellij-idea·idea
小伍_Five3 小时前
Spark实战能力测评模拟题精析【模拟考】
java·大数据·spark·scala·intellij-idea
橘子青衫3 小时前
Java多线程编程:深入探索线程同步与互斥的实战策略
java·后端·性能优化