【LeetCode笔记】剑指 Offer 55 - II. 平衡二叉树(递归、二叉树)
文章目录
- 题目描述
- 思路 && 代码
- 二刷
一脸懵逼,居然没写这道题的题解。。
题目描述
思路 && 代码
- 思路:平衡二叉树判断公式 = 左子树满足 + 右子树满足 + 左右子树高度差不超过1
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {public boolean isBalanced(TreeNode root) {return isBalancedTree(root) != -1;}// 为平衡二叉树,返回深度;否则返回-1int isBalancedTree(TreeNode root){// 空为平衡二叉树if(root == null){return 0;}int left = isBalancedTree(root.left);int right = isBalancedTree(root.right);// 左子树不是 || 右子树不是 || 左右子树不平衡if(left == -1 || right == -1 || left - right < -1 || left - right > 1){return -1;}return Math.max(left, right) + 1;}
}
- 无注释版本
class Solution {public boolean isBalanced(TreeNode root) {return isBalancedTree(root) != -1; }public int isBalancedTree(TreeNode root) {if(root == null) {return 0;}int left = isBalancedTree(root.left);int right = isBalancedTree(root.right);if(left - right > 1 || left - right < -1 || left == -1 || right == -1) {return -1;}return Math.max(left, right) + 1;}
}
二刷
- 好家伙,写出了不一样的写法
class Solution {public boolean isBalanced(TreeNode root) {if(root == null) {return true;}if(isBalanced(root.left) && isBalanced(root.right)) {int left = isBalancedTree(root.left);int right = isBalancedTree(root.right);int diff = left - right;return diff < 2 && diff > -2;}return false;}int isBalancedTree(TreeNode root) {if(root == null) {return 0;}return Math.max(isBalancedTree(root.left), isBalancedTree(root.right)) + 1;}
}
- 还是这个简洁点哇
class Solution {public boolean isBalanced(TreeNode root) {return isBalancedTree(root) != -1;}int isBalancedTree(TreeNode root) {if(root == null) {return 0;}int left = isBalancedTree(root.left);int right = isBalancedTree(root.right);if(right - left > 1 || right - left < -1 || left == -1 || right == -1) {return -1;}return Math.max(left, right) + 1;}
}
【LeetCode笔记】剑指 Offer 55 - II. 平衡二叉树(递归、二叉树)相关推荐
- 【LeetCode】剑指 Offer 55 - II. 平衡二叉树
[LeetCode]剑指 Offer 55 - II. 平衡二叉树 文章目录 [LeetCode]剑指 Offer 55 - II. 平衡二叉树 一.后序遍历 + 剪枝(从底至顶) 一.后序遍历 + ...
- LeetCode Algorithm 剑指 Offer 55 - II. 平衡二叉树
55 - II. 平衡二叉树 Ideas 这题直接扣平衡二叉树的定义就可以了,需要写一个辅助函数用来计算二叉树的高度,然后计算根节点左右子树的高度差,满足深度相差不超过1,那么它就是一棵平衡二叉树. ...
- 【LeetCode】剑指 Offer 32 - II. 从上到下打印二叉树 II
[LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II 文章目录 [LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II 一.层序遍历 BFS 一. ...
- 【LeetCode】剑指 Offer 59 - II. 队列的最大值
[LeetCode]剑指 Offer 59 - II. 队列的最大值 文章目录 [LeetCode]剑指 Offer 59 - II. 队列的最大值 package offer;import java ...
- 【LeetCode】剑指 Offer 58 - II. 左旋转字符串
[LeetCode]剑指 Offer 58 - II. 左旋转字符串 文章目录 [LeetCode]剑指 Offer 58 - II. 左旋转字符串 一.字符串切片 二.列表遍历拼接 三.字符串遍历拼 ...
- 【LeetCode】剑指 Offer 68 - II. 二叉树的最近公共祖先
[LeetCode]剑指 Offer 68 - II. 二叉树的最近公共祖先 文章目录 [LeetCode]剑指 Offer 68 - II. 二叉树的最近公共祖先 一.DFS 一.DFS 祖先的定义 ...
- 【LeetCode】剑指 Offer 57 - II. 和为s的连续正数序列
[LeetCode]剑指 Offer 57 - II. 和为s的连续正数序列 文章目录 [LeetCode]剑指 Offer 57 - II. 和为s的连续正数序列 一.求和公式 二.滑动窗口(双指针 ...
- 【LeetCode】剑指 Offer 55 - I. 二叉树的深度
[LeetCode]剑指 Offer 55 - I. 二叉树的深度 文章目录 [LeetCode]剑指 Offer 55 - I. 二叉树的深度 一.后序遍历(DFS) 二.层序遍历 一.后序遍历(D ...
- 字符串专题-LeetCode:剑指 Offer 58 - II. 左旋转字符串、LeetCode 459.重复的子字符串、 代码思路和注意点
文章目录 一.剑指 Offer 58 - II. 左旋转字符串 二.LeetCode 459.重复的子字符串 一.剑指 Offer 58 - II. 左旋转字符串 思路: 预留出n个字符空间s.res ...
最新文章
- 利用angular4和nodejs-express构建一个简单的网站(九)—用户登录
- Linux系统中FTP的配置(图文详解-全)
- c# 多态实现_虚方法
- php扩展mongodb模块安装
- MyEclipse将Java项目打包成jar文件的三种方法
- 三载春秋随风去,而今迈步从头越
- Elasticsearch 实战1:ES 项目实战(一)Java 集成 Spring Data Elasticsearch(一):简介及环境搭建
- 基于OpenCV的计算机视觉入门(5)图像美化(下)
- unity多边形uv地图
- 剪贴板增强工具 Ditto
- 埃森哲发布 2015 年五大 IT 趋势预测
- 基础集合论 第一章 5 偶集
- jenkins+phantomjs环境搭建及使用
- javacv使用笔记
- logit方程怎么写_碳酸钠和氯化钙的化学方程式怎么写
- Elasticsearch入门 - 简单上手
- Android Rect相关方法
- 动态像素绘画——StarDust
- “新基遇 星生态 心未来” 星际无限&神算云全球发布暨表彰盛典在深顺利召开
- 人工神经网络英文简称,人工神经网络 英文
热门文章
- spoon无法初始化至少一个步骤_手机怎么设置无线路由器 手机设置无线路由器步骤【详解】...
- java的oauth2.0_[转]Java的oauth2.0 服务端与客户端的实现
- java jquery post_jquery js post变量set和get for post
- python indices_python numpy triu_indices函数
- android 人脸识别边框_android Arcface人脸识别框/人脸抓拍框/人脸追踪框
- c语言软件电脑下载文件,求C语言头文件下载?
- IEEE选择和下载投稿期刊模板(LaTeX和Word)网站
- python获取当前文件路径
- C++常用字符串分割方法
- linux非阻塞通话编程,linux 非阻塞式socket编程求助。。