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

相关文章:

  • HTTP 请求返回状态码和具体含义?200、400、403、404、502、503、504等
  • 机械学习--SVM 算法
  • 用LaTeX优化FPGA开发:结合符号计算与Vivado工具链(二)
  • 华为网路设备学习-28(BGP协议 三)路由策略
  • Android Studio第一个kotlin项目“Hello Android”
  • kafak
  • windows自动获取wsl IP,并开启端口转发。
  • 【代码随想录day 14】 力扣 111.二叉树的最小深度
  • Axure基于中继器实现的组件库(导航菜单、动态表格)
  • Array Description(Dynamic programming)
  • 在发布应用程序内测时如何选择合适的分发上架方式?
  • Git 基础操作笔记(速查)
  • 视频遥测终端机是什么,其工作原理和应用领域
  • 高校合作 | 世冠科技联合普华、北邮项目入选教育部第二批工程案例
  • 01数据结构-图的概念和图的存储结构
  • 数据结构---二叉树(概念、特点、分类、特性、读取顺序、例题)、gdb调试指令、时间复杂度(概念、大O符号法、分类)
  • 【世纪龙科技】数智重构车身实训-汽车车身测量虚拟实训软件
  • 二叉树实现
  • Docker 创建镜像错误记录
  • Redis缓存击穿、穿透雪崩
  • 【NFTurbo】基于DockerCompose一键部署
  • gmssl私钥文件格式
  • 用户组权限及高级权限管理:从基础到企业级 sudo 提权实战
  • 《从零构建大语言模型》学习笔记2,文本数据处理1(以及tiktoken库无法下载gpt2参数,调用get_encoding时SSL超时的解决方法)
  • Redis是单线程性能还高的原因
  • SaaS 版 MES 系统业务文档
  • 【SpringBoot】SpringBoot配置
  • GPT OSS 双模型上线,百度百舸全面支持快速部署
  • 华为USG防火墙双机,但ISP只给了1个IP, 怎么办?
  • 医防融合中心-智慧化慢病全程管理医疗AI系统开发(上)