文章目录

  • 思路
  • 代码

思路

Height函数:
p为平衡二叉树时,正常返回p的高度;否则返回-1

若某结点返回值为-1,说明这个结点的左右子树不平衡,此时该结点的父结点接收到的子树高度为-1,则父结点的left值=0,继续返回-1

说明只要有一个点不平衡,那么这个信息(不平衡)将会向上传递,表现在数值上就是最后返回root高度为-1
若每个点都是平衡的,则正常返回root的高度,因为每个点都是平衡的,Height函数的出口只会在第一个return,不会执行到”return -1;”,此时就意味着该函数是一个返回root高度的函数

代码

int Height(struct TreeNode *p){if(p==NULL) return 0;int left=1+Height(p->left), right=1+Height(p->right);if(left>0  && right>0 && pow((left-right),2)<=1)return left>right? left:right;return -1;}bool isBalanced(struct TreeNode* root){int l=Height(root);return l>=0;
}

Leetcode题库 110.平衡二叉树(递归 C实现)相关推荐

  1. LeetCode题库第867题 转置矩阵

    LeetCode题库第867题 转置矩阵 LeetCode题库第867题 转置矩阵 我首先想到的方法是新建一个二维的矩阵,然后遍历原来的矩阵,将每一个元素放在新矩阵中该放的位置: // javapub ...

  2. LeetCode题库第888题 公平的糖果棒交换

    LeetCode题库第888题 公平的糖果棒交换 LeetCode第888道题 公平的糖果棒交换 首先,题目中说他们两个人的糖果的总数量是不一样的,并且要将A中的一个糖果和B的一个糖果交换后使得他们两 ...

  3. LeetCode题库第2题 两数相加

    两数相加 LeetCode题库第二题 两数相加 看完题目,就可以将题目抽象为三个指针,前两个指针是l1和l2,后一个指针是我们要求的,这三个指针同时移动,由于可能会产生进位,所以可以用一个变量来存储这 ...

  4. LeetCode题库第1题 两数之和

    两数之和 LeetCode题库第1题 两数之和 看到题,我就想到了暴力法: public int[] force(int[] nums,int target) {for (int i = 0; i & ...

  5. LeetCode题库整理【Java】—— 3 无重复字符的最长子串

    LeetCode题库整理[Java] ## 3 无重复字符的最长子串 题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" ...

  6. LeetCode题库整理【Java】—— 2 两数相加

    LeetCode题库整理[Java] 2.两数相加 题目:给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果, ...

  7. LeetCode题库整理【Java】—— 7整数反转

    LeetCode题库整理[Java] 7.整数反转 题目:给出一个32位的有符号整数,你需要将这个这个整数中每位上的数字进行反转. 示例1: 输入: 123 输出: 321 示例2: 输入: -123 ...

  8. LeetCode题库整理【Java】—— 1两数之和

    LeetCode题库整理[Java] 1.两数之和 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nu ...

  9. leetcode题库:4.两个排序数组的中位数

    题目: /**   *leetcode题库:4. 求两个排序数组的中位数  *  *  给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 .  *  请找出这两个有序数组的中位数. ...

最新文章

  1. 【Spring注解驱动开发】java工作流引擎框架
  2. mysql怎样循环插入数据_你向 Mysql 数据库插入 100w 条数据用了多久?
  3. zabbix frontends php,zabbix 3.0.3 安装
  4. 关闭或开启memory_target
  5. Linux 内核顶层Makefile 详解
  6. Django系列:(1)PyCharm下创建并运行我们的第一个Django工程
  7. Windows下的MySQL安装、MySQL-Front安装
  8. 关于verilog的一些基础知识整理
  9. win10 64位 JavaJDK的下载、安装与配置。
  10. 模拟退火算法(Python)
  11. 动态规划dp算法经典包子凑数java
  12. 网络安全笔记-网络设备专场(路由器、交换机、防火墙)
  13. pyecharts 模块
  14. JavaScript-⑤代码
  15. mysql加载audit失败_MySQL5.5 安装mcafee mysql-audit插件 不成功
  16. 多家知名企业笔试面试精华
  17. http请求头中Referer的含义和作用
  18. 使用Tycho构建OSGi插件项目
  19. 程序员有了这几款神器,瞬间逼格就上去了!
  20. C++与QML混合编程

热门文章

  1. OnClick,OnClientClick和OnServerClick的区别
  2. 使用httpHandlers进行url rewrite时,提示http 404 error 错误
  3. 域名转入Godaddy详解
  4. Swift之本地国际化与App内切换语言
  5. 2014/School_C_C++_A/3/x的x次幂
  6. JS实现的ajax发送数据重复
  7. 1336:【例3-1】找树根和孩子
  8. android优化最强软件,最强大的安卓优化工具诞生,让手机流畅度提升75%
  9. arcgis怎么用python重新排序,使用ArcGIS脚本工具将点数据进行排序并编号
  10. 用python处理文本数据_用Python读取几十万行文本数据