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

力扣110:判断二叉树是否为平衡二叉树

利用二叉树遍历的思想编写一个判断二叉树,是否为平衡二叉树

示例 :

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

思想:

代码:

int getDepth(struct TreeNode* node) {//如果结点不存在,返回0if(node==NULL)return 0;//求出右子树深度int rightDepth = getDepth(node->right);//求出左子树深度int leftDepth = getDepth(node->left);//返回左右子树中的较大值+1return rightDepth > leftDepth ? rightDepth + 1 : leftDepth + 1;
}bool isBalanced(struct TreeNode* root) {//递归结束条件为:传入结点为NULL,返回Trueif(root==NULL)return true;//求出左右子树的深度int leftDepth = getDepth(root->left);int rightDepth = getDepth(root->right);//若左右子树绝对值差距大于1,返回Falseif(abs(leftDepth - rightDepth) > 1 )return false;//检查左右子树是否为平衡二叉树return isBalanced(root->right) && isBalanced(root->left);
}

时间复杂度O(n);空间复杂度O(1) 

http://www.lryc.cn/news/455012.html

相关文章:

  • Chromium 中JavaScript Fetch API接口c++代码实现(一)
  • ARM(5)内存管理单元MMU
  • 文件上传漏洞原理
  • Web安全 - 安全防御工具和体系构建
  • 服务器数据恢复—raid磁盘故障导致数据库文件损坏的数据恢复案例
  • requests 中data=xxx、json=xxx、params=xxx 分别什么时候用
  • 毕设 大数据抖音短视频数据分析与可视化(源码)
  • 【SQL】深入理解SQL:从基础概念到常用命令
  • 一文看懂计算机中的大小端(Endianess)
  • 如何给父母安排体检?
  • C++之模版进阶篇
  • Vue3 中的 `replace` 属性:优化路由导航的利器
  • vite学习教程06、vite.config.js配置
  • 【大数据】Flink CDC 实时同步mysql数据
  • JavaEE: 深入解析HTTP协议的奥秘(1)
  • OpenStack Yoga版安装笔记(十六)Openstack网络理解
  • PEFT库和transformers库在NLP大模型中的使用和常用方法详解
  • 静止坐标系和旋转坐标系变换的线性化,锁相环线性化通用推导
  • AI学习指南深度学习篇-学习率衰减的变体及扩展应用
  • 成都睿明智科技有限公司真实可靠吗?
  • 力扣6~10题
  • IntelliJ IDEA 2024.2 新特性概览
  • C++基础(12)——初识list
  • 系统架构设计师论文《论NoSQL数据库技术及其应用》精选试读
  • 产品经理产出的原型设计 - 需求文档应该怎么制作?
  • phenylalanine ammonia-lyase苯丙氨酸解氨酶PAL功能验证-文献精读61
  • 柯桥生活口语学习之在化妆品店可以用到的韩语句子
  • Ubuntu 安装 Docker Compose
  • C++面试速通宝典——7
  • 毕业设计 大数据电影数据分析与可视化系统