Leetcode题库 110.平衡二叉树(递归 C实现)
文章目录
- 思路
- 代码
思路
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实现)相关推荐
- LeetCode题库第867题 转置矩阵
LeetCode题库第867题 转置矩阵 LeetCode题库第867题 转置矩阵 我首先想到的方法是新建一个二维的矩阵,然后遍历原来的矩阵,将每一个元素放在新矩阵中该放的位置: // javapub ...
- LeetCode题库第888题 公平的糖果棒交换
LeetCode题库第888题 公平的糖果棒交换 LeetCode第888道题 公平的糖果棒交换 首先,题目中说他们两个人的糖果的总数量是不一样的,并且要将A中的一个糖果和B的一个糖果交换后使得他们两 ...
- LeetCode题库第2题 两数相加
两数相加 LeetCode题库第二题 两数相加 看完题目,就可以将题目抽象为三个指针,前两个指针是l1和l2,后一个指针是我们要求的,这三个指针同时移动,由于可能会产生进位,所以可以用一个变量来存储这 ...
- LeetCode题库第1题 两数之和
两数之和 LeetCode题库第1题 两数之和 看到题,我就想到了暴力法: public int[] force(int[] nums,int target) {for (int i = 0; i & ...
- LeetCode题库整理【Java】—— 3 无重复字符的最长子串
LeetCode题库整理[Java] ## 3 无重复字符的最长子串 题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" ...
- LeetCode题库整理【Java】—— 2 两数相加
LeetCode题库整理[Java] 2.两数相加 题目:给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果, ...
- LeetCode题库整理【Java】—— 7整数反转
LeetCode题库整理[Java] 7.整数反转 题目:给出一个32位的有符号整数,你需要将这个这个整数中每位上的数字进行反转. 示例1: 输入: 123 输出: 321 示例2: 输入: -123 ...
- LeetCode题库整理【Java】—— 1两数之和
LeetCode题库整理[Java] 1.两数之和 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nu ...
- leetcode题库:4.两个排序数组的中位数
题目: /** *leetcode题库:4. 求两个排序数组的中位数 * * 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . * 请找出这两个有序数组的中位数. ...
最新文章
- 【Spring注解驱动开发】java工作流引擎框架
- mysql怎样循环插入数据_你向 Mysql 数据库插入 100w 条数据用了多久?
- zabbix frontends php,zabbix 3.0.3 安装
- 关闭或开启memory_target
- Linux 内核顶层Makefile 详解
- Django系列:(1)PyCharm下创建并运行我们的第一个Django工程
- Windows下的MySQL安装、MySQL-Front安装
- 关于verilog的一些基础知识整理
- win10 64位 JavaJDK的下载、安装与配置。
- 模拟退火算法(Python)
- 动态规划dp算法经典包子凑数java
- 网络安全笔记-网络设备专场(路由器、交换机、防火墙)
- pyecharts 模块
- JavaScript-⑤代码
- mysql加载audit失败_MySQL5.5 安装mcafee mysql-audit插件 不成功
- 多家知名企业笔试面试精华
- http请求头中Referer的含义和作用
- 使用Tycho构建OSGi插件项目
- 程序员有了这几款神器,瞬间逼格就上去了!
- C++与QML混合编程
热门文章
- OnClick,OnClientClick和OnServerClick的区别
- 使用httpHandlers进行url rewrite时,提示http 404 error 错误
- 域名转入Godaddy详解
- Swift之本地国际化与App内切换语言
- 2014/School_C_C++_A/3/x的x次幂
- JS实现的ajax发送数据重复
- 1336:【例3-1】找树根和孩子
- android优化最强软件,最强大的安卓优化工具诞生,让手机流畅度提升75%
- arcgis怎么用python重新排序,使用ArcGIS脚本工具将点数据进行排序并编号
- 用python处理文本数据_用Python读取几十万行文本数据