每天一道leetcode:剑指 Offer 55 - II. 平衡二叉树(适合初学者递归)

news2025/1/21 0:49:34

今日份题目:

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

示例1

给定二叉树 `[3,9,20,null,null,15,7]`

    3
   / \
  9  20
    /  \
   15   7

返回 `true` 。

示例2

给定二叉树 `[1,2,2,3,3,null,null,4,4]`

       1
      / \
     2   2
    / \
   3   3
  / \
 4   4

返回 `false` 。

提示

 `0 <= 树的结点个数 <= 10000`

题目思路

使用递归,计算树高和判断是否是平衡二叉树。递归计算树高,结束条件就是到达空节点,也就是叶子节点的后边,返回0,其他情况返回左右子树高度的最高值加一。递归判断是否为平衡二叉树,就是递归判断左右子树及其左右子子树等等是否为平衡二叉树。

代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution 
{
public:
    int height(TreeNode* root) //递归计算树的高度
    {
        if(root==NULL) return 0;
        else 
            return max(height(root->left),height(root->right))+1; //加一是因为还有个根节点
    }

    bool isBalanced(TreeNode* root) 
    {
        if(root==NULL) return true;
        else 
            return abs(height(root->left)-height(root->right))<=1&&isBalanced(root->left)&&isBalanced(root->right); //左右子树里都不存在非平衡树且根节点处也满足平衡二叉树的条件
    }
};

提交结果

欢迎大家在评论区讨论,如有不懂的部分,欢迎在评论区留言!

更新不易,宝子们点个赞支持下,谢谢!

每天一道leetcode,大家一起在评论区打卡呀!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/895472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Centos安装搜狗输入法

目录 1、切换到root 2、卸载ibus&#xff08;如果已经卸载&#xff0c;可以忽略该步骤&#xff09; 3、安装epel源 4、安装fcitx 5、安装拼音输入法 6、安装依赖包 7、安装搜狗输入法 8、安装Alien 9、deb包 转 rpm包 (在deb包目录下或指定deb包目录) 10、安装转换的…

初学者SpringBoot+Vue打通前后端详细步骤(从零开始)

目录 前言介绍 一、后端SpringBoot项目创建 &#xff08;一&#xff09;springboot后端实现增删改查 二、前端Vue项目的创建 &#xff08;一&#xff09;下载必要的环境&#xff08;有则跳过&#xff09; &#xff08;二&#xff09;创建vue项目并使用Element-ui 三、前…

E96系列电阻阻值和代码、乘数对照表

1、为什么要用代码表示&#xff1f; 0805封装还可以简单易懂写下四位丝印&#xff0c;比如10K的1002&#xff0c;但0603的封装上面再想写下四位丝印就没空间了&#xff0c;就算写了也不容易看不清。 2、E96系列电阻阻值和代码、乘数对照表 下面是E96系列的对照表&#xff0c;…

SVG在线编辑器TOP5,这些工具你都得知道!

随着响应式网站设计的普及,SVG这种矢量图格式越来越受欢迎。SVG可以使图像在任何设备上展示效果出色。那么有哪些值得推荐的SVG在线编辑器呢?本文整理了5款热门实用的SVG在线编辑工具,它们功能强大,甚至可以替代Photoshop。这些SVG编辑器值得设计师们亲自试用,相信能给大家带来…

AR/VR眼镜转接器方案,实现同时传输视频快充方案

简介 虚拟现实头戴显示器设备&#xff0c;简称VR头显VR眼镜&#xff0c;是利用仿真技术与计算机图形学人机接口技术多媒体技术传感技术网络技术等多种技术集合的产品&#xff0c;是借助计算机及最新传感器技术创造的一种崭新的人机交互手段。VR头显VR眼镜是一个跨时代的产品。…

Linux——KVM虚拟化

目录标题 虚拟化技术虚拟化技术发展案例KVM简介KVM架构及原理KVM原理KVM虚拟化架构/三种模式虚拟化前、虚拟化后对比KVM盖中盖套娃实验 虚拟化技术 通过虚拟化技术将一台计算机虚拟为多台逻辑计算机&#xff0c;在一台计算机上同时运行多个逻辑计算机&#xff0c;同时每个逻辑…

寻找宝藏【SGOI-14】

题目描述 【背景】 据说在意大利的米兰市的地下&#xff0c;埋藏着一堆的宝藏。一天&#xff0c;一个名叫 Shevchenko 的人来到这地下宝库&#xff0c;准备把所有的宝藏都搬回家。当他来到这里时&#xff0c;发现这里是一个迷宫&#xff0c;宝藏埋藏在各个角落&#xff0c;在另…

【马蹄集】第二十三周——进位制专题

进位制专题 目录 MT2186 二进制&#xff1f;不同&#xff01;MT2187 excel的烦恼MT2188 单条件和MT2189 三进制计算机1MT2190 三进制计算机2 MT2186 二进制&#xff1f;不同&#xff01; 难度&#xff1a;黄金    时间限制&#xff1a;1秒    占用内存&#xff1a;128M 题目…

vue3-模板中的变化

v-model vue2比较让人诟病的一点就是提供了两种双向绑定&#xff1a;v-model和.sync&#xff0c;在vue3中&#xff0c;去掉了.sync修饰符&#xff0c;只需要使用v-model进行双向绑定即可。 为了让v-model更好的针对多个属性进行双向绑定&#xff0c;vue3作出了以下修改 当对自…

SpreadJS 16.2 and SpreadJS 16.1.5 Crack

SpreadJS 16.2 SpreadJS SpreadJS 是一个完整的企业 JavaScript 电子表格解决方案&#xff0c;用于创建财务报告和仪表板、预算和预测模型、科学、工程、医疗保健、教育、科学实验室笔记本和其他类似的 JavaScript 业务应用程序。利用高速计算引擎和 19 种语言的 500 多个 Exce…

源码低代码开发工具:JVS轻应用的基础介绍(OA系统、逻辑编排)

JVS低代码开发平台提供了大量的可配置组件和预先集成的功能&#xff0c;开发人员可以通过拖拽和设置属性的方式&#xff0c;快速搭建应用程序的前端界面和交互逻辑。同时&#xff0c;低代码平台也提供了丰富的后端服务和集成能力&#xff0c;可以轻松地与现有的系统和第三方服务…

Vue 2 动态组件和异步组件

先阅读 【Vue 2 组件基础】中的初步了解动态组件。 动态组件与keep-alive 我们知道动态组件使用is属性和component标签结合来切换不同组件。 下面给出一个示例&#xff1a; <!DOCTYPE html> <html><head><title>Vue 动态组件</title><scri…

夹具、治具、模具零件加工、云MES系统解决方案

夹具、治具、模具零件、自动化零件属于典型的多品种、小批量生产模式&#xff0c;模具零件和自动化零件一般属于单件生产或者散件生产&#xff0c;大部分机械加工企业都有这样的管理困惑&#xff0c;市面上通用的ERP系统和MES系统都无法满足这种多品种小批量、单件加工或散件加…

mysql从传统模式切到GTID模式后启动主从,主从异常报错1236

一 前言 MySQL 的主从复制作为一项高可用特性&#xff0c;用于将主库的数据同步到从库&#xff0c;在维护主从复制数据库集群的时候&#xff0c;作为专职的MySQL DBA&#xff0c;笔者相信大多数人都会遇到“Got fatal error 1236 from master when reading data from binary …

校园跑腿市场行情分析

随着社会的发展和人们生活节奏的加快&#xff0c;校园跑腿市场逐渐兴起并呈现出蓬勃发展的态势。在这个快节奏的时代&#xff0c;越来越多的学生需要在繁忙的学业之外完成各种任务&#xff0c;而校园跑腿服务正是应运而生&#xff0c;为他们提供了便利和时效。本文将从需求方面…

「追风少年」——迈克尔·詹姆斯·欧文要来中国啦!

亚运会前夕&#xff0c;8月23日~25日&#xff0c;世界著名球星迈克尔詹姆斯欧文&#xff08;Michael James Owen&#xff09;将来到杭州和球迷朋友们一起开展签售会以及举办他在中国的直播首秀&#xff0c;届时将有超头部主播加持&#xff0c;享誉世界的「追风少年」将在亚运会…

【vue】项目基础环境搭建、css样式重置与公用

nodejs环境 nodejs是当下前端工程化开发必不可少的环境, 使用 nodejs的 npm功能来管理依赖包 查看node 和 npm的版本 node -v #查看node版本npm -v #查看npm版本 git版本控制 git版本控制工具是目前最为流行的分布式版本管理工具,代码的**提交, 检出, 日志**, 都需要通过git完…

深度分析纳斯达克上市公司慧择的竞争优势和投资价值

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 一、保险行业的现状、竞争与机遇 在疫情期间&#xff0c;很多行业的经营理念与经营方式&#xff0c;甚至客户行为、客户需求都发生了变化&#xff0c;进而催生出新的机遇。保险行业亦是如此&#xff0c;受疫情影响&#xf…

opencv-python使用鼠标点击图片显示该点坐标和像素值IPM逆透视变换车道线二值化处理

OpenCV的鼠标操作 实现获取像素点的功能主要基于OpenCV的内置函数cv2.setMouseCallback()&#xff0c;即鼠标事件回调 setMouseCallback(winname, onMouse,userdata0) winname: 接收鼠标事件的窗口名称 onMouse: 处理鼠标事件的回调函数指针 userdata: 传给回调函数的用户数据…

Google API实战与操作

Google api实战与操作 一. Google API 权限配置二. 操作API2.1 引入依赖2.2 导入代码 Google官网 实现一套用java程序控制GoogleAPI实现自动生成监控日报等功能,具体能操作Gsheet及document 一. Google API 权限配置 打开上面官网,新建项目 启用API 搜索sheet及document …