文章目录

  • 题目描述
  • 思路 && 代码
    • 二刷

一脸懵逼,居然没写这道题的题解。。

题目描述


思路 && 代码

  • 思路:平衡二叉树判断公式 = 左子树满足 + 右子树满足 + 左右子树高度差不超过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. 平衡二叉树(递归、二叉树)相关推荐

  1. 【LeetCode】剑指 Offer 55 - II. 平衡二叉树

    [LeetCode]剑指 Offer 55 - II. 平衡二叉树 文章目录 [LeetCode]剑指 Offer 55 - II. 平衡二叉树 一.后序遍历 + 剪枝(从底至顶) 一.后序遍历 + ...

  2. LeetCode Algorithm 剑指 Offer 55 - II. 平衡二叉树

    55 - II. 平衡二叉树 Ideas 这题直接扣平衡二叉树的定义就可以了,需要写一个辅助函数用来计算二叉树的高度,然后计算根节点左右子树的高度差,满足深度相差不超过1,那么它就是一棵平衡二叉树. ...

  3. 【LeetCode】剑指 Offer 32 - II. 从上到下打印二叉树 II

    [LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II 文章目录 [LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II 一.层序遍历 BFS 一. ...

  4. 【LeetCode】剑指 Offer 59 - II. 队列的最大值

    [LeetCode]剑指 Offer 59 - II. 队列的最大值 文章目录 [LeetCode]剑指 Offer 59 - II. 队列的最大值 package offer;import java ...

  5. 【LeetCode】剑指 Offer 58 - II. 左旋转字符串

    [LeetCode]剑指 Offer 58 - II. 左旋转字符串 文章目录 [LeetCode]剑指 Offer 58 - II. 左旋转字符串 一.字符串切片 二.列表遍历拼接 三.字符串遍历拼 ...

  6. 【LeetCode】剑指 Offer 68 - II. 二叉树的最近公共祖先

    [LeetCode]剑指 Offer 68 - II. 二叉树的最近公共祖先 文章目录 [LeetCode]剑指 Offer 68 - II. 二叉树的最近公共祖先 一.DFS 一.DFS 祖先的定义 ...

  7. 【LeetCode】剑指 Offer 57 - II. 和为s的连续正数序列

    [LeetCode]剑指 Offer 57 - II. 和为s的连续正数序列 文章目录 [LeetCode]剑指 Offer 57 - II. 和为s的连续正数序列 一.求和公式 二.滑动窗口(双指针 ...

  8. 【LeetCode】剑指 Offer 55 - I. 二叉树的深度

    [LeetCode]剑指 Offer 55 - I. 二叉树的深度 文章目录 [LeetCode]剑指 Offer 55 - I. 二叉树的深度 一.后序遍历(DFS) 二.层序遍历 一.后序遍历(D ...

  9. 字符串专题-LeetCode:剑指 Offer 58 - II. 左旋转字符串、LeetCode 459.重复的子字符串、 代码思路和注意点

    文章目录 一.剑指 Offer 58 - II. 左旋转字符串 二.LeetCode 459.重复的子字符串 一.剑指 Offer 58 - II. 左旋转字符串 思路: 预留出n个字符空间s.res ...

最新文章

  1. 利用angular4和nodejs-express构建一个简单的网站(九)—用户登录
  2. Linux系统中FTP的配置(图文详解-全)
  3. c# 多态实现_虚方法
  4. php扩展mongodb模块安装
  5. MyEclipse将Java项目打包成jar文件的三种方法
  6. 三载春秋随风去,而今迈步从头越
  7. Elasticsearch 实战1:ES 项目实战(一)Java 集成 Spring Data Elasticsearch(一):简介及环境搭建
  8. 基于OpenCV的计算机视觉入门(5)图像美化(下)
  9. unity多边形uv地图
  10. 剪贴板增强工具 Ditto
  11. 埃森哲发布 2015 年五大 IT 趋势预测
  12. 基础集合论 第一章 5 偶集
  13. jenkins+phantomjs环境搭建及使用
  14. javacv使用笔记
  15. logit方程怎么写_碳酸钠和氯化钙的化学方程式怎么写
  16. Elasticsearch入门 - 简单上手
  17. Android Rect相关方法
  18. 动态像素绘画——StarDust
  19. “新基遇 星生态 心未来” 星际无限&神算云全球发布暨表彰盛典在深顺利召开
  20. 人工神经网络英文简称,人工神经网络 英文

热门文章

  1. spoon无法初始化至少一个步骤_手机怎么设置无线路由器 手机设置无线路由器步骤【详解】...
  2. java的oauth2.0_[转]Java的oauth2.0 服务端与客户端的实现
  3. java jquery post_jquery js post变量set和get for post
  4. python indices_python numpy triu_indices函数
  5. android 人脸识别边框_android Arcface人脸识别框/人脸抓拍框/人脸追踪框
  6. c语言软件电脑下载文件,求C语言头文件下载?
  7. IEEE选择和下载投稿期刊模板(LaTeX和Word)网站
  8. python获取当前文件路径
  9. C++常用字符串分割方法
  10. linux非阻塞通话编程,linux 非阻塞式socket编程求助。。