170.二叉树:平衡二叉树(力扣)

代码解决

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr, right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/class Solution {
public:// 递归计算二叉树的高度,同时检查是否平衡int height(TreeNode* root) {// 基本条件:如果节点为空,高度为0if (root == nullptr) return 0;// 递归计算左子树的高度int leftdeep = height(root->left);// 如果左子树不平衡,返回-1if (leftdeep == -1) return -1;// 递归计算右子树的高度int rightdeep = height(root->right);// 如果右子树不平衡,返回-1if (rightdeep == -1) return -1;// 如果左右子树高度差大于1,表示当前树不平衡,返回-1if (abs(leftdeep - rightdeep) > 1) return -1;// 否则返回当前树的高度,即左右子树高度的最大值加1return 1 + max(leftdeep, rightdeep);}// 判断二叉树是否平衡bool isBalanced(TreeNode* root) {// 调用height方法,如果返回值为-1,表示树不平衡,返回falsereturn height(root) == -1 ? false : true;}
};
  • TreeNode 结构体定义

    • val:节点的整数值。
    • left:指向左子节点的指针。
    • right:指向右子节点的指针。
  • Solution 类

    • 包含两个方法:heightisBalanced
  • height 方法

    • 这是一个递归函数,用来计算二叉树的高度,并检查树是否平衡。
    • 基本条件:如果 rootnullptr,则返回高度 0。
    • 递归计算左子树和右子树的高度:
      • 如果左子树的高度为 -1,表示左子树不平衡,直接返回 -1。
      • 如果右子树的高度为 -1,表示右子树不平衡,直接返回 -1。
    • 如果左右子树的高度差超过 1,表示当前树不平衡,返回 -1。
    • 否则,返回当前树的高度,即左右子树高度的最大值加 1。
  • isBalanced 方法

    • 这个方法调用 height 方法,如果返回值为 -1,表示树不平衡,返回 false。否则,返回 true,表示树是平衡的。

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

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

相关文章

第103天: 权限提升-Linux 系统辅助项目脏牛Dirty内核漏洞SUIDGUID

项目下载地址 综合类探针: https://github.com/liamg/traitor 自动化提权: https://github.com/AlessandroZ/BeRoot 信息收集: https://github.com/rebootuser/LinEnum https://github.com/sleventyeleven/linuxprivchecker 漏洞探针&#xf…

Webpack前端打包工具详解

目录 Webpack前端打包工具详解一、Webpack 的作用二、Webpack 的安装和基本使用1. 安装 Webpack2. 创建 Webpack 配置文件3. 运行 Webpack 三、Webpack 核心概念1. 入口(Entry)2. 输出(Output)3. 加载器(Loaders&#…

【wiki知识库】06.文档管理页面的添加--前端Vue部分

📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、🐻前端Vue模块的改造 BUG修改 1.wangeditor无法展示问题 2.弹窗无法正常关闭问题 2.1 添加admin-doc.vue 2.1.1 点击admin-ebook中的路由跳转到admin-doc 2.2.2 进入…

Rust-06-所有权

所有权(系统)是 Rust 最为与众不同的特性,它让 Rust 无需垃圾回收即可保障内存安全,下面是所有权以及相关功能:借用(borrowing)、slice 以及 Rust 如何在内存中布局数据。 通过所有权系统管理内…

CSDN个人主页动态地图(前端/后端)

前段时间有人问我,关于CSDN个人主页动态地图的实现,我来解答一下。 这里要注意一下:使用CSDN的API需要遵循其开发者协议和使用规范,确保你的使用方式符合相关规定 前端部分: 创建一个HTML页面作为个人主页。在页面上放…

TCP/IP协议分析实验:通过一次下载任务抓包分析

TCP/IP协议分析 一、实验简介 本实验主要讲解TCP/IP协议的应用,通过一次下载任务,抓取TCP/IP数据报文,对TCP连接和断开的过程进行分析,查看TCP“三次握手”和“四次挥手”的数据报文,并对其进行简单的分析。 二、实…

Prompt实现简单英语单词教学

model: gpt-3.5-turbo Bot: 用于执行翻译任务 OutPutDefend: 用于判断任务输出结果是否完整 具体实现及Prompt Bot 模型配置 使用 gpt-3.5-turbo 便可完成任务 考虑到该任务是生成文本的任务,因此将temperature设置为了0.7 Prompt 将任务描述,输出…

数据结构:旋转数组

方法1 &#xff08;三次逆置法&#xff09;&#xff1a; void reverse(int* nums, int start, int end) {while (start < end) {int temp nums[start];nums[start] nums[end];nums[end] temp;start;end--;} }void rotate(int* nums, int numsSize, int k) {k k % numsS…

大模型常用推理参数工作原理

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 do_sample do_sample 参数控制是否使用采样…

Spring Security 应用详解

一、 集成SpringBoot 1.1 Spring Boot 介绍 Spring Boot 是一套 Spring 的快速开发框架&#xff0c;基于 Spring 4.0 设计&#xff0c;使用 Spring Boot 开发可以避免一些繁琐的工程 搭建和配置&#xff0c;同时它集成了大量的常用框架&#xff0c;快速导入依赖包&#xff0…

【C++11】多线程常用知识

知识体系 thread C++ thread中最常用的两个函数是join和detach,怎么选择呢,简单来说,如果希望等待线程结束,用join,如果希望异步执行,且不等待执行结果,那么就用detach;thread_local可以简单理解为一个线程级别的全局变量;线程id在调试多线程程序时是非常有用的东西;…

【学习笔记】Linux文件编译调试相关(问题未解决)

//-I意为include 指定头文件搜索路径 -l&#xff1a;告诉编译器链接时需要的库 gcc *.c -I /usr/include/fastdfs/ -I /usr/include/fastcommon/ -l fdfsclient//调试gcc -g -rdynamic main.c如何解决 “ 段错误(吐核) ” &#xff1f;&#xff1f;&#xff1f; 【线上排错】记…

c语言基础篇A

A1.程序和程序设计语言 程序 程序算法数据结构程序设计方法语言工具和环境数据结构:数据的类型和数据的组织形式算法&#xff1a;对数据操作的方法和步骤 程序设计语言的种类 第一代语言&#xff1a;机器语言第二代语言&#xff1a;汇编语言第三代语言&#xff1a;高级语言…

coap:使用californium建立coap server和client的简单示例

【pom.xml】 <dependency><groupId>org.eclipse.californium</groupId><artifactId>californium-core</artifactId><version>2.0.0-M7</version> </dependency> <dependency><groupId>org.eclipse.californium&l…

zabbix-agent,zabbix_agentd和zabbix-agent2,zabbix_agent2的区别

所以带横杠- 的是应用程序名&#xff0c;比如zabbix-server和zabbix-agent 带下划线_ 的是应用程序所对应的进程名&#xff0c;zabbix_server和zabbix_agentd 从zabbix5版本开始&#xff0c;应用程序zabbix-agent分为zabbix-agent和zabbix-agent2&#xff0c;zabbix-agent2是…

【第13章】SpringBoot实战篇之项目部署

文章目录 前言一、准备1. 引入插件2. 打包3. 启动4. 后台启动 二、跳过测试模块三、外置配置文件1.引入插件2.忽略配置文件3. 外置配置文件 总结 前言 项目部署需要把项目部署到Linux服务器上&#xff0c;SpringBoot项目通过Maven打包即可快速生成可运行Jar包程序。 一、准备 …

Comfyui容器化部署与简介

目前使用 Stable Diffusion 进行创作的工具主要有两个&#xff1a;Stable Diffusion WebUI 和 ComfyUI。本文重点介绍ComfyUI的部署使用。 ComfyUI 可定制性很强&#xff0c;可以让创作者搞出各种新奇的玩意&#xff0c;通过工作流的方式&#xff0c;也可以实现更高的自动化水平…

Kimichat使用案例010:快速识别出图片中的表格保存到Excel

文章目录 一、介绍二、图片信息三、输入内容四、输出内容五、markdown提示词六、markdown输出一、介绍 如果有一张图片格式的表格,想要快速复制到Excel表格中,那么一般要借助于OCR工具。之前试过不少在线OCR工具,识别效果差强人意。其实,kimichat就可以非常好的完成这个任务…

文件怎么去重?5个技巧,教你删除重复文件!

一般来说&#xff0c;在处理大量文件时&#xff0c;你可能会遇到重复的类似文件。这些文件占据了电脑上不必要的磁盘空间&#xff0c;导致系统性能下降。而这些文件可以是不同类型的&#xff0c;如照片、视频、音频、存档、文档等。正因如此&#xff0c;您需要通过文件去重来删…

C语言----寻找100~999范围内的质数--素数

//寻找100~999之间的素数//#include <stdio.h> //#include <math.h> int isprime(int num) {if (num % 2 0)//排除偶数{return 0;}for (int j 3; j < sqrt(num); j 2)//从3开始,因为已经排除2了。2是最小的素数/*使用一个for循环来检查奇数因子&#xff0c;因…