[剑指offer] 平衡二叉树

简介: 本文首发于我的个人博客:尾尾部落题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。解题思路定义:平衡二叉查找树,简称平衡二叉树。可以是空树。

本文首发于我的个人博客:尾尾部落

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

解题思路

定义:平衡二叉查找树,简称平衡二叉树。

  1. 可以是空树。
  2. 假如不是空树,任何一个结点的左子树与右子树都是平衡二叉树,并且高度之差的绝对值不超过1。

遍历每个结点,借助一个获取树深度的递归函数,根据该结点的左右子树高度差判断是否平衡,然后递归地对左右子树进行判断。

参考代码

public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        if(root == null)
            return true;
        return Math.abs(maxDept(root.left) - maxDept(root.right)) <=1 &&
            IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);
    }
    public int maxDept(TreeNode root){
        if(root == null)
            return 0;
        return 1 + Math.max(maxDept(root.left), maxDept(root.right));
    }
}
目录
相关文章
|
Kubernetes Linux Windows
第二章 Linux和windows部署helm 客户端
第二章 Linux和windows部署helm 客户端
351 0
Magisk模块:自动墓碑后台v1.7.1(测试版)
Magisk模块:自动墓碑后台v1.7.1(测试版)
3456 0
|
Prometheus 监控 Cloud Native
SpringBoot系列之Prometheus自定义埋点上报
之前介绍了一篇SpringBoot集成Prometheus实现数据上报的博文,在前面一篇博文中,更多的是一个SpringBoot应用如何最小成本的接入Prometheus,并结合Grafana配置一个完整的应用监控大盘 有看过前文的小伙伴可能知晓,SpringBoot接入Prometheus之后,基本上不用做额外的开发,就已经实现了我们关心的JVM情况、GC情况、HTTP调用请求等信息,然而在实际的业务开发过程中,我们总会遇到一些需要手动上报的场景,那么我们可以怎么处理呢?
2157 0
SpringBoot系列之Prometheus自定义埋点上报
|
Linux Perl
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
|
Java 数据库连接 mybatis
Mybatis openSession.commit()手动提交数据和openSession.commit(true)自动动提交数据
Mybatis openSession.commit()手动提交数据和openSession.commit(true)自动动提交数据
186 9
|
存储 SQL 分布式计算
大数据中结构化数据
【10月更文挑战第18天】
764 4
|
人工智能 数据可视化 数据挖掘
5款CRM系统评测:中小企业如何选择适合的CRM工具?
在竞争激烈的市场中,中小企业如何高效管理客户关系、提升销售业绩、改善客户满意度是其成功的关键。本文评测了5款主流CRM系统,分别为板栗看板、HubSpot CRM、Zoho CRM、Pipedrive和Salesforce Essentials,从功能特色、优缺点及使用体验等角度进行分析,帮助中小企业选择最适合的工具。
401 0
|
数据采集 消息中间件 API
Python爬虫验证码识别——手机验证码的自动化处理
Python爬虫验证码识别——手机验证码的自动化处理
921 0
|
Linux 测试技术 开发工具
CentOS Linux 8使用阿里源(安装jdk11、git测试)
CentOS Linux 8使用阿里源(安装jdk11、git测试)
1782 1
|
JavaScript 前端开发 API
如何学习React.js?
【5月更文挑战第27天】如何学习React.js?
242 14