二叉树判断

简介: 二叉树判断

black box

判断平衡二叉树

数据

使用returnType结构体:

  • 一个节点的高度height
  • 以此节点为根节点的树是否平衡isBalance

思路

利用左右递归返回的returnType,构建向上返回的returnType

实现

public static class returnType
{
    public int height;
    public boolean isBalance;
    public returnType(int hi,boolean isB) {
        height = hi;
        isBalance = isB;
    }
};
public static returnType isBBT(Node root)
{
    if(root == null) return new returnType(0,true);
    returnType Returnleft = isBBT(root.left);
    returnType Returnright = isBBT(root.right);
    int height = Math.max(Returnleft.height,Returnright.height) + 1;
    boolean isBalance = (Returnleft.isBBT && Returnright.isBBT) 
        && Math.abs(Returnright.height - Returnleft.height) < 2;
    return new returnType(height,isBalance);
}


判断平衡搜索二叉树

数据

结构体returnType

  • 以节点作为根节点的树是否平衡isbst
  • 以节点作为的根节点的树的最大key
  • 以节点作为的根节点的树的最小key

思路

利用左右递归返回的returnType,构建向上返回的returnType

实现

public static class returnType{
    public boolean isbst;
    public int maxNum;
    public int minNum;
    public returnType(boolean is,int ma,int mi){
        isbst = is;
        maxNum = ma;
        minNum = mi;
    }      
};
public static returnType isBST(Node root)
{
    if(root == null) return new returnType(0,int.MIN,int.MAX);
    returnType Returnleft = isBST(root.left);
    returnType Returnright = isBST(root.right);
    int Maxnum;
    int Minnum;
    if(Returnright != null)
    {
        Maxnum = Math.max(root.value,Returnright.maxNum);
        Minnum = Math.min(root.value,Returnright.minNum);
    }    
    if(Returnleft != null)
    {
        Maxnum = Math.max(root.value,Returnleft.maxNum);
        Minnum = Math.min(root.value,Returnleft.minNum);
    }    
    boolean isbst = false;
    if((Returnleft != null ? Returnleft.isbst && Returnleft.maxNum < root.value : true)
      && (Returnright != null ? Returnright.isbst && Returnright.minNum < root.value : true))
    {
        isbst = true;
    }
    return new returnType(isbst,Maxnum,Minnum);
}

总结

根据这两个结构的特性,提取判断所需的变量一起返回

目录
相关文章
|
域名解析 网络协议 对象存储
阿里云 CDN 控制台演示:源站加速|学习笔记
快速学习阿里云 CDN 控制台演示:源站加速
阿里云 CDN 控制台演示:源站加速|学习笔记
|
6月前
|
存储 运维 Kubernetes
K8s 持久化存储怎么选?别只盯着性能,能不能活下来更重要
K8s 持久化存储怎么选?别只盯着性能,能不能活下来更重要
418 6
|
7月前
|
存储 NoSQL Java
从单机到集群:Redis部署全攻略
本文全面解析Redis四种核心部署方式:单机版部署简单适合开发测试;主从复制实现读写分离和数据备份;哨兵模式提供自动故障转移能力;Redis Cluster集群支持分片存储和横向扩展。文章详细阐述了每种方案的原理、部署步骤、Java代码实现及适用场景,并给出生产环境选型指南。通过对比各方案优缺点,帮助开发者根据业务需求(数据量、并发量、可用性要求等)选择最佳部署方式,同时提供参数优化建议和常见问题解决方案。
512 2
|
6月前
|
存储 缓存 测试技术
阿里云服务器 u1 实例 ecs.u1-c1m2.xlarge(4 核 8G)测评
阿里云u1实例(ecs.u1-c1m2.xlarge)4核8G配置,搭配1M-3M固定带宽与20G起ESSD Entry云盘,是兼顾算力与实用性的热门选择。其核心优势在于算力100%释放、运行稳定,4核CPU可应对多任务并行处理,8G内存能支撑中小型数据库或多应用部署,既不似低配置那般局限于轻量场景,也不像高配置那般成本偏高,适配个人开发者的复杂项目与中小企业的通用业务需求。以下从优惠活动价格、性能表现、适用场景及避坑要点四方面,用通俗语言详细解析。
707 0
|
10月前
|
小程序 Java 知识图谱
Java 学习笔记 —— BMI & BMR 计算器
这是一个使用 Java 编写的 BMI 与 BMR 计算器小程序,可输入年龄、性别、身高和体重,计算身体质量指数(BMI)和基础代谢率(BMR),并输出健康评估结果。通过该项目,掌握了 Java 的输入处理、数据验证、条件判断、数学运算及格式化输出等基础知识,是 Java 初学者的理想练习项目。
|
Cloud Native Linux API
.NET 发展历程
.NET 是开源、跨平台、社区活跃技术开发平台,中国信通院在 2022 | OSCAR 开源产业大会大会上发布的全球开源生态研究报告里首次提出开源社区成熟度度量模型,.NET 法律合规表现出色,组件许可证兼容性较高,法律风险较小。其生态基于 MIT 和 Apache 2.0 协议基础上构建,对商业友好。
1377 1
.NET 发展历程
Java入门005~Springboot2.2.4引入freemarker模板
Java入门005~Springboot2.2.4引入freemarker模板
454 0
|
数据可视化 Shell C++
ROS入门笔记(九):编写ROS的第一个程序hello world(重点)
ROS入门笔记(九):编写ROS的第一个程序hello world(重点)
1119 0
ROS入门笔记(九):编写ROS的第一个程序hello world(重点)
|
存储 缓存 前端开发
网站前后端分离是什么意思?底层原理是什么?
网站前后端分离是什么意思?底层原理是什么?
1341 0

热门文章

最新文章