题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树

平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

如下为平衡二叉树

如下为非平衡二叉树

class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }
}public class IsBalancedTreeMe {public static void main(String[] args) {}public boolean IsBalanced_Solution(TreeNode root) {if(null == root){return true; // //一棵空树就是平衡二叉树}if(Math.abs(getDeep(root.left) - getDeep(root.right)) <= 1){// 左右子树的高度差小于等于1,那么接着判断左右子树是不是平衡二叉树return IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);}else{//不满足左右子树高度差小于等于1,那这棵树肯定不是平衡二叉树return false;}}// 求树的高度private int getDeep(TreeNode root){if(null == root){return 0;}int left = getDeep(root.left);int right = getDeep(root.right);return (left > right ? left : right)+1;}
}

常考数据结构与算法:平衡二叉树相关推荐

  1. 常考数据结构与算法:输出二叉树的右视图

    题目描述 请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图 上图树的右视图为:{1,4,3,7} 做此题之前可以先做下面3道题: 1. 常考数据结构与算法:求二叉树的层序遍历 2.常 ...

  2. 常考数据结构与算法:求二叉树的层序遍历

    题目描述 给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历) 例如: 给定的二叉树是{3,9,20,#,#,15,7}, 该二叉树层序遍历的结果是 [ [3], [9,20], ...

  3. 常考数据结构与算法:删除链表的倒数第n个节点

    题目描述 给定一个链表,删除链表的倒数第n个节点并返回链表的头指针 例如, 给出的链表为:1->2->3->4->5, n= 2.删除了链表的倒数第n个节点之后,链表变为1-& ...

  4. 常考数据结构与算法:找到字符串的最长无重复字符子串

    题目描述 给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同). 示例1 输入 [2,3,4,5] 返回值 4 示例2 输入 [2,2,3,4,3] 返回值 3 方法 ...

  5. 常考数据结构与算法:最长公共子串

    题目描述 给定两个字符串str1和str2,输出两个字符串的最长公共子串 题目保证str1和str2的最长公共子串存在且唯一. 示例1 输入 "1AB2345CD","1 ...

  6. 常考数据结构与算法:两个链表生成相加链表

    题目描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数. 给定两个这种链表,请生成代表两个整数相加值的结果链表. 例如:链表 1 为 9->3->7,链表 ...

  7. 常考数据结构与算法:买卖股票的最好时机

    题目描述 假设你有一个数组,其中第 i 个元素是股票在第i 天的价格. 你有一次买入和卖出的机会.(只有买入了股票以后才能卖出).请你设计一个算法来计算可以获得的最大收益. 示例 1: 输入: [8, ...

  8. 常考数据结构和算法:设计LRU缓存结构

    题目描述 设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能 set(key, value):将记录(key, value)插入该结构 get(key):返回key对应的val ...

  9. 常考数据结构与算法:每k个节点反转链表

    题目: 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度.如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序. 示例 : 给定这 ...

最新文章

  1. MAC能登录微信,浏览器连不上网
  2. 使用帆软finereport实现跳转的一点心得
  3. BugkuCTF-Misc:眼见非实(ISCCCTF)
  4. 机器学习理论《统计学习方法》学习笔记:第十一章 条件随机场(CRF)
  5. android 源码各版本下载 原生纯净版
  6. 容器学习 之 容器的网络类型(十二)
  7. SAP Spartacus cypress集成测试执行失败的一些常见原因
  8. 如果你没空读书,就一定要来看看这8个公众号!
  9. java BigDecimal八种舍入模式
  10. Dubbo入门和应用
  11. html设置渐变色背景图片,css中渐变色作为背景图来使用总结
  12. voronoi图编程构造_可视化编程真的有那么糟糕?
  13. loadrunner- winsock 函数 一览表
  14. 表达式求值(栈方法/C++语言描述)(一)
  15. python编写端口扫描器_端口扫描器编写 python
  16. 怎么给批处理(bat)添加注释
  17. 设计模式之备忘录模式(Memento)
  18. DJI Onboard-SDK-ROS-4.0.1 在妙算2-G上编译运行
  19. 正大市场监管总局、发改委、证监会联合提醒告诫部分铁矿石
  20. layui 改写 table 排序,填加中文按照拼音排序

热门文章

  1. String 课后作业2
  2. MySQL数据库 高级查询(一)
  3. android-学习1 配置环境
  4. 安装nginx+ngx_lua支持WAF防护功能
  5. MySQL 报错 1055
  6. 域名解析—MX和cname记录冲突
  7. 正则表达式 - 元字符
  8. ios swift ios8 模糊
  9. css区块定位之浮动与清除属性
  10. Storm-源码分析-EventManager (backtype.storm.event)