当前位置: 首页 > article >正文

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;
    }
}

  


http://www.kler.cn/a/550896.html

相关文章:

  • 【C++初阶】类和对象①
  • Maven 中的 Artifact 与 GroupId:定义与使用
  • Java并发编程——AQS原理解析
  • 【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析⑩】
  • NetCDF数据处理
  • Linux高并发服务器开发 第十八天(信号及相关概念 信号捕捉)
  • 三、tsp学习笔记——屏幕移植
  • 嵌入式 Linux 设备树:为什么需要设备树?
  • Intel i7系列CPU替换为Xeon X79或X99架构的CPU替代方案和对比分析
  • jenkins 2.380配置从节点
  • DC-7靶机渗透测试全过程
  • BUU38 [RoarCTF 2019]Easy Java1
  • label-studio 导入既有的yolo格式标注
  • 【嵌入式Linux应用开发基础】read函数与write函数
  • 【Rust中级教程】1.9. 所有权(简单回顾):所有权的核心思想、如何实现`Copy` trait、值的删除(丢弃)、值删除的顺序
  • 在Linux系统下修改Docker的默认存储路径
  • Vue 组件化开发——基础与实践
  • 基于 SSM 框架和 Vue 的高校共享单车管理系统设计与实现
  • 人工智能 - 主动视觉可能就是你所需要的:在双臂机器人操作中探索主动视觉
  • 如何在微信小程序中使用 Lottie 动画