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

算法-二叉树篇09-平衡二叉树

平衡二叉树

力扣题目链接

题目描述

给定一个二叉树,判断它是否是 平衡二叉树 。

解题思路

把求二叉树最大深度的代码修改一下即可,在递归的时候判断两个子树的高度相差是否大于1,如果大于1就直接返回-1,说明该子树不平衡,如果两个子树中出现-1,也是直接返回,否则返回最大子树高度加1。

题解

class Solution {
public:
    bool isBalanced(TreeNode* root) {
        return func(root) == -1? false : true;
    }

    int func(TreeNode* root){
        if(root == NULL){
            return 0;
        }
        int n1 = func(root->left);
        int n2 = func(root->right);
        if(n1 == -1 || n2 == -1){
            return -1;
        }
        return abs(n1 - n2) > 1 ? -1 : 1 + max(n1, n2);
    }
};
http://www.dtcms.com/a/40363.html

相关文章:

  • 【Python爬虫(86)】元宇宙浪潮下,Python爬虫能否乘风破浪?
  • 【leetcode hot 100 11】移动零
  • 道可云人工智能每日资讯|深圳将设立人工智能和机器人产业基金
  • VMware各个软件的作用
  • javascript this 关键字
  • 联想 SR590 服务器 530-8i RAID 控制器更换损坏的硬盘
  • 动态内容加载的解决方案:Selenium与Playwright对比故障排查实录
  • 【面试】Java 之 String 系列 -- String 为什么不可变?
  • Linux Kernel Connection Tracking Table
  • ES的简单讲解
  • 【量化策略】动量追踪策略
  • Tkinter 标准对话框
  • 【PromptCoder】使用 package.json 生成 cursorrules
  • AWS S3 如何设置公开访问权限?
  • Git系列详细介绍和操作
  • Flutter系列教程之(5)——常用控件Widget的使用示例
  • 深入理解 Spring 中的 `ThreadPoolTaskExecutor` 与 `ThreadPoolExecutor`
  • CC攻击防御策略全解析:技术实现与代码示例
  • 【C/C++】理解C++内存与Linux虚拟地址空间的关系---带你通透C++中所有数据
  • 【堆】堆的基本概念及操作,堆与优先队列
  • 航空装配自动化神器Ethercat转profient网关搭配机器人精准控制
  • 文章表中文章内容content字段存富文本数据,在大量数据的前提下关于优化查询速度的思考
  • Docker 高级网络配置
  • 渗透测试【绕过过滤order by 、limit】
  • 用DeepSeek来帮助学习three.js加载3D太极模形
  • 无人机遥控器的亮度 和 两个工作频率
  • python中的JSON数据格式
  • android keystore源码分析
  • 代码随想录算法训练营第五十天| 动态规划12
  • centos9之ESXi环境下安装