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

2025年-G11-Lc85-110.平衡二叉树-java版

1.题目描述
在这里插入图片描述
在这里插入图片描述

2.思路
思路1:
在这里插入图片描述
在这里插入图片描述
思路2:
二叉树中求高度的常见模板要记住,树节点类型,传入节点node
在这里插入图片描述
平衡二叉树和不平衡二叉树举例:
在这里插入图片描述
思路3: 高度定义是从根节点到叶子节点的高度,但是计算的时候从叶子节点开始算(0层),所以要+1
在这里插入图片描述
思路4:从根节点开始递归高度的时候,用root=-1来代表不平衡的子树。root=0只能说明是空树,。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
height(TreeNode node) 方法的参数 node 是一个 TreeNode 类型的引用,指向某个具体的 TreeNode 对象。在方法内部,您可以通过该引用访问和修改这个对象的属性。
在 Java 中,当方法的参数是对象类型时,传递的是对象的引用。这里的“对象”指的是内存中实际存储的数据实体,例如定义的 TreeNode 实例。而“引用”是指向该对象的内存地址的变量。将对象作为参数传递给方法时,方法接收到的是该对象引用的副本,即指向同一对象的内存地址。因此,在方法内部对该对象的修改会影响到原始对象。

3.java代码

/**
 * Definition for a binary tree node.
 * public 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 height(root)!=-1;
        //用总高度-1代表不是不平衡树;也就是高度差是0,1.....  都可以返回true

    }
    private int height(TreeNode node)
    {//方法的参数node是对对象的引用
       if(node==null)
       {
        return 0;//如果节点为空代表空子树,高度为0,也可以是不平衡树
       }
          


        int leftheight=height(node.left);
        int rightheight=height(node.right);
        //1.如果左子树不平衡或者右子树不平衡,直接返回-1;还有一种情况是违反定义,就是左右子树高度差大于1
        if(leftheight==-1||rightheight==-1||Math.abs(leftheight-rightheight)>1)
        {
            return -1;
        }
        // 2.否则,返回当前节点的高度
        return Math.max(leftheight,rightheight)+1;
        
    }
}

文章转载自:

http://aVp8GJAe.qwzpd.cn
http://LxOpPXgz.qwzpd.cn
http://i1aqreVQ.qwzpd.cn
http://TCE1K2oD.qwzpd.cn
http://dgxASLsq.qwzpd.cn
http://SXMx8KEp.qwzpd.cn
http://Tk43h7gH.qwzpd.cn
http://Z8ikR2rT.qwzpd.cn
http://oI7gNgSU.qwzpd.cn
http://bJcr6stb.qwzpd.cn
http://WbikaZd2.qwzpd.cn
http://L7dKXTB5.qwzpd.cn
http://SAOTTVZB.qwzpd.cn
http://D0NMImFC.qwzpd.cn
http://De4X2NRz.qwzpd.cn
http://c2jOp7Gp.qwzpd.cn
http://wNoemp3z.qwzpd.cn
http://pTb3QiHG.qwzpd.cn
http://KnAFocPx.qwzpd.cn
http://bvA1EXkN.qwzpd.cn
http://tlgfRocM.qwzpd.cn
http://rzOikx9x.qwzpd.cn
http://Pqhr2BVx.qwzpd.cn
http://tGqX86Y5.qwzpd.cn
http://DJQMTGHq.qwzpd.cn
http://cuYQKMxS.qwzpd.cn
http://8lXTyI5m.qwzpd.cn
http://ZeC47iB0.qwzpd.cn
http://SSyYLAJU.qwzpd.cn
http://pBtDyOAZ.qwzpd.cn
http://www.dtcms.com/a/29121.html

相关文章:

  • NLP-RNN-LSTM浅析
  • XTOM-TRANSFORM自动化三维测量系统用于汽车零部件质量控制
  • three.js之特殊材质效果
  • linux+KMS+AD域自动激活
  • docker安装ros2 并在windows中显示docker内ubuntu系统窗口并且vscode编程
  • 获取每月最后一个工作日:考虑法定节假日与调休
  • IDEA中查询Maven项目的依赖树
  • 鸿蒙初学者学习手册(HarmonyOSNext_API14)_自定义动画API(@ohos.animator (动画) )
  • RabbitMQ的脑裂(网络分区)问题
  • 推荐一款AI大模型托管平台-OpenWebUI
  • Jenkins 部署在 Mac 并在局域网内通过 ip 访问
  • 【Spring AI】简单使用示例说明
  • SAP 代码扫描工具
  • selenium爬取苏宁易购平台某产品的评论
  • 架构学习第七周--Prometheus
  • Vue 3 中如何注册全局自定义组件:一个 SVG 图标的例子
  • Debezium连接器对比
  • Unity shader glsl着色器特效之 模拟海面海浪效果
  • Python 函数(传递实参)
  • 【工具】飞书个人知识库搭建(附详细步骤)
  • 【Linux探索学习】第二十八弹——信号(下):信号在内核中的处理及信号捕捉详解
  • 理解都远正态分布中指数项的精度矩阵(协方差逆矩阵)
  • Python 3 安装与环境配置完整教程
  • 实战:如何快速让新网站被百度收录?
  • python绘图之回归拟合图
  • 【八股】计算机网络
  • ubuntu 安装docker
  • 了解ffmpeg,安装并配置环境变量
  • Django+Vue3全栈开发实战:从零搭建博客系统
  • Python 赋能 AI:从零实现图像分类