当前位置: 首页 > 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.lryc.cn/news/614620.html

相关文章:

  • Android初学者系统开发学习路线参考
  • Zabbix网络发现:自动化监控新利器
  • 【无标题】无名管道
  • NY128NY133美光固态闪存NY139NY143
  • 施耐德Twido PLC怎么实现远程上下载程序和编程配置?
  • F5发布业界首创集成式应用交付与安全平台,开启ADC 3.0新时代
  • 安全常见漏洞
  • openpnp - 不连接设备,只大概测试一下摄像头是否好使
  • Java中的方法引用操作符(::)详解与实战应用
  • Linux 运维与优化的系统化思维:从内核到生产环境的全链路管理
  • 【C++】类和对象--类中6个默认成员函数(2) --运算符重载
  • 笔试——Day32
  • 基于LLM的Chat应用测试方法探索:系统化评估与持续优化
  • 企业本地知识库助手 大模型+本地知识库
  • Prometheus 监控平台部署与应用
  • 【代码随想录day 14】 力扣 104.二叉树的最大深度
  • 三种 SSE 对比
  • 【LLM开发学习】
  • 十三、抽象队列同步器AQS
  • ClickHouse集群部署实践---3分片2副本集群
  • 【C#】掌握并发利器:深入理解 .NET 中的 Task.WhenAll
  • 宝龙地产债务化解解决方案一:基于资产代币化与轻资产转型的战略重构
  • MMBFJ310LT1G一款N沟道JFE 晶体管适用于高频放大器和振荡器等射频应用MMBFJ310LT1
  • 【vue】Vue 重要基础知识清单
  • 全面解析软件工程形式化说明技术
  • Vue 服务端渲染(SSR)详解
  • 页面tkinter
  • 初始化完数据库提示缺少server文件的处理方法
  • C 语言链表数据结构
  • 接口为什么要设计出v1和v2