题目描述

  输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左、右子树的深度相差不超过1,那么它就是一棵平衡二叉树。例如,图中的二叉树就是一棵平衡二叉树。

牛客网刷题地址

思路分析

  在求二叉树的深度的过程中判断左右子树之间的高度差,如果高度差大于1 ,就返回-1,说明不是平衡二叉树,否则返回二叉树的深度。

测试用例

  1. 功能测试:平衡的二叉树;不是平衡的二叉树;二叉树中所有节点都没有左/右子树。
  2. 特殊输入测试:二叉树中只有一个节点;二叉树的头节点为nullptr指针。

Java代码

public class Offer055_02 {
public static void main(String[] args) {
test1();
test2();
test3(); } public static boolean IsBalanced_Solution(TreeNode root) {
return Solution1(root);
} private static boolean Solution1(TreeNode root) {
return getDepth(root)!=-1;
} private static int getDepth(TreeNode root) {
if(root==null) return 0;
int leftDep = getDepth(root.left);
if(leftDep == -1) return -1;
int rightDep = getDepth(root.right);
if(rightDep==-1) return -1;
return Math.abs(leftDep-rightDep) >1 ? -1 :(Math.max(leftDep,rightDep) + 1);
} private static void test1() { } private static void test2() { }
private static void test3() { } }

代码链接

剑指Offer代码-Java

最新文章

  1. Android SDK升级后报错error when loading the sdk 发现了元素 d:skin 开头无效内容
  2. 【转】关于Oracle将小于1的数字to_char后丢掉0的解决办法
  3. 阿里云centos yum源更换,两个文件是从阿里云服务器拷贝出来的,可安装openvpn
  4. OO之美
  5. zw版【转发·台湾nvp系列Delphi例程】HALCON HWindowX 01
  6. 部署步骤“回收 IIS 应用程序池”中出现错误: <nativehr>0x80070005</nativehr><nativestack></nativestack>拒绝访问。
  7. 使用Apache Felix Remote Shell远程管理OSGI
  8. label WordWrap
  9. Android版:验证手机号码的正则表达式
  10. Xamarin改写安卓Residemenu控件
  11. sass 语法实例
  12. java volatile关键字的理解
  13. python13_day4
  14. Git 经常用到的命令
  15. mongodb常用查询语句
  16. flask之SQLAlchemy
  17. spoj Fast Multiplication
  18. kmp算法中的nextval实例解释
  19. 开发模式 MVC、MVP、MVVM和MVX框架模式
  20. Java与GIS的联系

热门文章

  1. 前端插件之Datatables使用--上篇
  2. Flink 源码解析 —— 源码编译运行
  3. 理解MySQL(一)--MySQL介绍
  4. golang 结合实例更好的理解参数传递和指针
  5. javacv——读取摄像头的图像、截取视频的画面
  6. DT-06 For AT
  7. HTML加载FLASH(*.swf文件)详解
  8. eclipse安装STS插件遇到的问题
  9. 从零开始学习GDI+ (一)
  10. SpringMVC源码剖析5:消息转换器HttpMessageConverter与@ResponseBody注解