平衡二叉树(递归)

给定一个二叉树,判断它是否是 平衡二叉树.平衡二叉树 是指该树所有节点的左右子树的深度相差不超过 1。

  

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:true

示例 2:

输入:root = [1,2,2,3,3,null,null,4,4]
输出:false

示例 3:

输入:root = []
输出:true

提示:

  • 树中的节点数在范围 [0, 5000] 内
  • -104 <= Node.val <= 104

/*** 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:bool isBalanced(TreeNode* root) {return depth(root) != -1;}int depth(TreeNode* root){if(!root) return 0;int ldepth = depth(root->left);int rdepth = depth(root->right);if(ldepth == -1 || rdepth == -1)return -1;if(abs(ldepth - rdepth) > 1)return -1;return max(ldepth,rdepth) + 1;}};

在主函数 isBalanced 中,通过调用 depth 函数,如果返回值不等于 -1,则说明树是平衡的。

递归函数 depth 来计算每个节点的高度,同时在计算过程中检查该节点的左右子树是否平衡。

if(ldepth == -1 || rdepth == -1):

这行代码的作用是判断当前节点的左右子树是否已经被判定为不平衡。

  • 如果 左子树的深度ldepth 为 -1,说明左子树已经不平衡;同理,如果右子树的深度rdepth 为 -1,说明右子树也已经不平衡。如果任意一个子树不平衡,当前节点也应该被视为不平衡,因此直接返回 -1。

if(abs(ldepth - rdepth) > 1):

这行代码检查当前节点的左右子树高度差是否超过 1。

  • abs(ldepth - rdepth) 计算的是当前节点的左子树和右子树的高度差。如果高度差大于 1,说明当前节点不平衡,因此返回 -1。

检查左右子树的高度差:
  • 如果左右子树的高度差大于 1,说明不平衡,返回 -1。
  • 如果左子树或右子树已经返回 -1,说明子树不平衡,也返回 -1。

如果当前节点的左右子树都平衡,返回当前节点的高度,即 max(ldepth, rdepth) + 1

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

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

相关文章

Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)

案例背景 虽然在效果上&#xff0c;传统的逻辑回归模型通常不如现代的机器学习模型&#xff0c;但在风控领域&#xff0c;解释性至关重要。逻辑回归的解释性是这些“黑箱”模型所无法比拟的&#xff0c;因此&#xff0c;研究传统的评分卡模型依然是有意义的。 传统的评分卡模型…

Weblogic漏洞复现(Vulhub)

0x00前言 1.docker 安装 Docker的安装_docker安装-CSDN博客 2.docker的镜像 1.可以在阿里云上的容器服务找到镜像源。 2.也可以使用下面的镜像源&#xff0c;时快时慢不稳定。 {"registry-mirrors":["https://docker.registry.cyou","https://d…

【Python环境配置-Step1】PyCharm 2024最新官网下载、安装教程

背景&#xff1a; 1、 步骤&#xff1a; 1、PyCharm 官网下载地址&#xff1a;https://www.jetbrains.com/pycharm/ 2、查看下图红框选中&#xff0c;下载社区版&#xff08;免费&#xff09; 3、&#xff08;查看下图红框选中&#xff09;这里选其他版本 4、这里我下载的…

用vite创建项目

一. vite vue2 1. 全局安装 create-vite npm install -g create-vite 2. 创建项目 进入你想要创建项目的文件夹下 打开 CMD 用 JavaScript create-vite my-vue2-project --template vue 若用 TypeScript 则 create-vite my-vue2-project --template vue-ts 这里的 …

FBX福币交易所A股三大指数小幅低开 稀土永磁板块回调

查查配分析11月5日电 周二,A股三大指数小幅低开。沪指开盘跌0.10%报3306.81点,深证成指开盘跌0.09%报10653.20点,创业板指开盘跌0.05%报2184.90点。 FBX福币凭借用户友好的界面和对透明度的承诺,迅速在加密货币市场中崭露头角,成为广大用户信赖的平台。 来源:同花顺iFinD 盘面…

LeetCode总结-链表

一、遍历链表 1290.二进制链表转整数 2058.找出临界点之间的最小和最大距离 2181.合并零之间的节点 二、删除节点 问&#xff1a;为什么没有修改 dummy&#xff0c;但 dummy.next 却是新链表的头节点&#xff1f;如果删除了 head&#xff0c;那么最后返回的是不是原链表的头…

腐蚀图像分割系统:前端交互展示

腐蚀图像分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DySnakeConv&#xff06;yolov8-seg-LSKNet等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global Al…

NIM 平台生成式 AI-demo

需要python环境 官网注册&#xff1a;&#xff08;后续调用模型需要秘钥key&#xff09;Try NVIDIA NIM APIs 可以看到有多种模型&#xff1a; 官方案例 1.安装相关依赖&#xff1a; pip install langchain_nvidia_ai_endpoints langchain-community langchain-text-splitt…

欢迎使用Markdown编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

智慧医疗:AI如何改变传统医疗服务模式?

内容概要 在如今的医疗界&#xff0c;智慧医疗正如一阵旋风&#xff0c;呼啸而来&#xff0c;打破了传统的模式。这一变革的核心&#xff0c;毫无疑问是人工智能。想象一下&#xff0c;一个不需要排队候诊、甚至不需要出门的医生——这就是智能助手的非凡魅力&#xff01;通过…

1.kubernetes作用及组件

容器管理集群名称叫做k8s 容器的编排工具&#xff1a;swarm&#xff0c;kubesphere&#xff0c;open shift&#xff0c;kubernetes【市场占比大】 一.kubernetes介绍 1.kubernetes是什么&#xff1f; 由谷歌公司开源的应用&#xff0c;基于go语言编写 简称k8s 2.kubernet…

【AcWing】算法基础课-动态规划

目录 1、闫式DP分析法 2、背包问题 2.1 01背包问题 朴素版本 优化版本 2.2 完全背包问题 朴素版本 优化版本 2.3 多重背包问题 朴素版本 二进制优化 2.4 分组背包问题 3、线性DP 3.1 数字三角形 3.2 最长上升子序列 3.3 最长公共子序列 4、区间DP 5、数位统计…

白天用的投影仪哪款好?掌握这个亮度参数谁敢忽悠你

人们追求松弛人生的同时&#xff0c;也着眼于高品质的家庭娱乐体验&#xff0c;高端家用投影仪以其大屏幕的视觉冲击力和便捷的移动性&#xff0c;应运成为众多家庭客厅、卧室的新宠。而在挑选家用投影仪时&#xff0c;亮度作为衡量其性能的重要指标之一&#xff0c;直接影响着…

七牛云OSS的使用

图片上传 一、七牛云oss介绍 1.1 图片存储介绍 在实际开发中&#xff0c;我们会有很多处理不同功能的服务器。例如&#xff1a; 应用服务器&#xff1a;负责部署我们的应用 数据库服务器&#xff1a;运行我们的数据库 文件服务器&#xff1a;负责存储用户上传文件的服务器…

重新构想定性数据分析:使用 NVivo 15 实现 AI、反思和备忘录

NVivo 是研究出版物中引用最多的定性数据分析软件 (QDA 软件),使用 NVivo v15 最新主要版本从定性和混合方法数据中发现更多信息&#xff0c;融合 Lumivero AI Assistant 更快地识别主题、运行高级查询和发现基于证据的见解&#xff0c;让您在更短的时间内获得严谨的研究结果。…

C++【string的模拟实现】

在前文我们讲解了string类接口使用&#xff08;C【string类的使用】(上),C【string类的使用】&#xff08;下&#xff09;&#xff09;&#xff0c;本片文章就来模拟实现string类。 注&#xff1a;本文实现的是string的部分重点内容&#xff0c;目的是为了更好的了解string&…

zabbix安装配置与使用

zabbix Zabbix的工作原理如下: 监控部分: Zabbix Agent安装在各个需要监控的主机上,它以主配置的时间间隔(默认60s)收集主机各项指标数据,如CPU占用率、内存使用情况等。 通讯部分: Agent会把收集的数据通过安全通道(默认10051端口)发送到Zabbix Server。Server会存储这些数…

7.3、实验三:RIPv2的基本配置

源文件&#xff1a; 7.3、实验三&#xff1a;RIPv2的基本配置: https://url02.ctfile.com/d/61945102-63684790-45f44b?p2707 (访问密码: 2707) 一、目的 能够使用RIPv2路由协议 二、实验要求 1.要求 使用RIPv2协议&#xff0c;使得PC0 和 Service0能够通信&#xff0c;…

石岩田心村的地面停车点(月卡350)

​我之前一直以为城中村里的地面停车场会比上屋地铁口的联天停车场便宜一些。没想到这个田心村月卡也是350元哈。比对面的园岭村还贵&#xff0c;元岭村月卡我记得才260元。 田心村停车场标识牌 序号 收费项目 收费标准 1 小车临时停放 10元/小时&#xff0c;超过1小时加收…

大模型学习笔记------CLIP模型的再思考

大模型学习笔记------CLIP模型的再思考 1、CLIP模型与Prompt(提示)的思考2、CLIP模型与ResNet等分类模型的根本区别3、结束语 上文已经讲 CLIP&#xff08;Contrastive Language-Image Pretraining&#xff09;这个模型&#xff0c;也讲了我的一些思考。但是&#xff0c;随着深…