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

【代码随想录day 15】 力扣 110.平衡二叉树

视频讲解:https://www.bilibili.com/video/BV1Ug411S7my/?vd_source=a935eaede74a204ec74fd041b917810c
文档讲解:https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html
力扣题目:https://leetcode.cn/problems/balanced-binary-tree/description/

判断一个二叉树是不是平衡二叉树主要就是看二叉树的左右子树的最大差值是否大于1
我们这里用C语言写判断函数,如果二叉树是平衡的,返回其深度之差,如果不平衡,返回-1.
在递归的过程中,如果子树已经不平衡了,那么整个二叉树就是不平衡的,因此我们一旦发现不平衡,直接返回-1即可。如果平衡的话,就返回最大深度,也就是1+fmax(left,right)。

int getDepth(struct TreeNode *node)
{if(!node){return 0;}int right=getDepth(node->right);if(right==-1) return -1;int left=getDepth(node->left);if(left==-1) return -1;if(abs(left-right)>=2) return -1;else{return 1+fmax(left,right);}
}
bool isBalanced(struct TreeNode* root) {//判断特殊情况if(!root){return 1;}//计算深度int result=getDepth(root);   //判断是否相差大于1if(result==-1){return false;}else{return true;}//返回值
}

还有用C++写的代码,原理相同

class Solution {
public:int getDepth(TreeNode *node){//终止条件:节点为空if(node==NULL){return 0;}//开始递归int left=getDepth(node->left);//判断左子树是否平衡if(left==-1) return -1;//开始右递归int right=getDepth(node->right);//判断右子树是否平衡if(right==-1) return -1;//计算左右子树高度之差int result = abs(left-right);//高度只差如果大于1说明不平衡if(result>=2) return -1;//如果不大于一返回高度差else{return 1+max(left,right);}//返回值return result;}bool isBalanced(TreeNode* root) {//计算深度差int result=getDepth(root);//判断深度差是否等于-1if(result==-1){return false;}else{return true;}}
};
http://www.dtcms.com/a/321019.html

相关文章:

  • 总结运行CRMEB标准版(uniapp)微信小程序的问题
  • Spring Boot 优雅配置InfluxDB3客户端指南:@Configuration + @Bean + yml实战
  • 配置MyBatis SQL日志打印
  • 机器学习-----SVM(支持向量机)算法简介
  • PEV2(PostgreSQL Explain Visualizer 2)
  • 云平台运维工具 —— 阿里云原生工具
  • 2025年最新Java后端场景题+八股文合集(100w字面试题总结)
  • 「双训智伴」:重构人犬协同的智能训练生态系统
  • 基于 C++ 的湍流数值模拟理论报告
  • 无人机遥控器教练模式技术要点
  • Go 踩过的坑之协程参数不能过大
  • Chat GPT5功能
  • ESP32-menuconfig(3) -- Serial flasher config
  • 宁商平台税务升级之路:合规为纲,服务为本
  • 唯品会以图搜图(拍立淘)API接口调用指南详解
  • Vite React项目引入unocss 及 @unocss/preset-icons的使用
  • Mac安装python、conda环境教程
  • 相机坐标系与世界坐标系的点相互转换:原理、可视化与实践
  • Spring MVC REST API设计详解:从零构建高效接口
  • 2025 TexLive+VScode排版IEEE TGRS论文
  • 使用 Gulp 替换 XML 文件内容
  • SpringMVC(四)
  • 跨平台音乐管理新方案:Melody如何实现一站式音源整合
  • 设计模式(二)——策略模式
  • MySQL 索引详细说明
  • 12. 消息队列-RabbitMQ
  • 行业速览:中国新能源汽车市场格局与关键趋势
  • 【LLM实战】RAG初体验,两种实现方式
  • wstool的一个完整的工作流解析
  • 安全合规1--实验:ARP欺骗、mac洪水攻击、ICMP攻击、TCP SYN Flood攻击