Balanced Binary Tree

Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
解法1:
1.计算每个节点的高度
2.从根节点开始从上往下遍历,判断每个节点的左右子树是否是平衡的

缺点:每次遍历都要重新计算高度,很多节点的高度都重复计算了,时间复杂度o(n^2)

解法2:

从根节点开始,从上往下遍历,按照中序遍历的思想,从左右子节点向根节点遍历,一依次判断平衡状态,这样根结点可以重复利用已经计算的子节点的高度,只需要依次遍历整棵树。在遇到某个子树非平衡时,能直接结束,返回false。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
import java.math.*;
public class Solution {public boolean isBalanced(TreeNode root) {if(root == null)return true;int leftH = getHeight(root.left);int rightH = getHeight(root.right);int diff = leftH - rightH;if(diff>1 || diff<-1){return false;}else{return isBalanced(root.left) && isBalanced(root.right);}}int getHeight(TreeNode root){if(root == null){return 0;}return 1+Math.max(getHeight(root.left),getHeight(root.right));}/**public boolean isBalanced(TreeNode root) {if(root == null)return true;if(getHeight(root) == -1){return false;}else{return true;}}public int getHeight(TreeNode root){if(root == null)return 0;int leftH = getHeight(root.left);if(leftH == -1)return -1;int rightH = getHeight(root.right);if(rightH == -1)return -1;if(leftH-rightH > 1 || leftH-rightH < -1)return -1;return 1+(leftH>rightH?leftH:rightH);}*/
}

转载于:https://www.cnblogs.com/wennian/p/5036884.html

leetcode-110:判断平衡二叉树 Java相关推荐

  1. leetcode 110 --- 判断给定的二叉树是否是平衡二叉树

    1 题目 判断给定的二叉树是否是平衡二叉树 平衡二叉树的性质为: 要么是一棵空树,要么任何一个节点的左右子树高度差的绝对值不超过 1. 一颗树的高度指的是树的根节点到所有节点的距离中的最大值. 2 解 ...

  2. LeetCode——110,判断平衡二叉树

    /*** \* Created: liuhuichao* \* Date: 2019/8/29* \* Time: 30:09 PM* \* Description: 判断平衡二叉树* \* 给定一个 ...

  3. C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解

    剑指offer 面试题39:判断平衡二叉树 提交网址:  http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...

  4. LeetCode 110 Balanced Binary Tree 平衡二叉树

    LeetCode 110 Balanced Binary Tree Given a binary tree, determine if it is height-balanced. For this ...

  5. LeetCode 110 Balanced Binary Tree

    LeetCode 110 Balanced Binary Tree Problem Description: 判断二叉树是不是平衡二叉树.所谓平衡二叉树,即每个节点的两个子树深度差的绝对值不超过1. ...

  6. [Leetcode][第39题][JAVA][组合总和][回溯][dfs][剪枝]

    [问题描述][中等] [解答思路] 1. 回溯 import java.util.ArrayDeque; import java.util.ArrayList; import java.util.De ...

  7. [Leetcode][第17题][JAVA][电话号码的字母组合][回溯]

    [问题描述][中等] [解答思路] 用哈希表/数组存储每个数字对应的所有可能的字母,然后进行回溯操作. 回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是 ...

  8. [Leetcode][第201题][JAVA][数字范围按位与][位运算][Brian Kernighan]

    [问题描述][中等] [解答思路] 1. 暴力 逐位与 ,只需要判断i= 0 或 i == 2147483647 的话,就跳出 for 循环即可. 时间复杂度:O(N) 空间复杂度:O(1) publ ...

  9. LeetCode 110. Balanced Binary Tree

    LeetCode 110. Balanced Binary Tree 本博客参考自:http://www.cnblogs.com/grandyang/p/4045660.html Solution1: ...

最新文章

  1. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的解决方案...
  2. 如何把照片正面变成反面_没有锁边机如何做衣服(五种方法)
  3. linux备份日志文件脚本,Linux篇:Shell脚本实现Gitlab双备份
  4. Python内置函数使用说明
  5. 推荐系统之美团在CTR模型优化的实践
  6. r语言中删除向量的某些元素_R中的向量
  7. eclipse查看jar包源码(反编译)
  8. Soft Bellman Equation and Soft Value Iteration证明
  9. FileZilla,读取目录列表失败(425 Can‘t open data connection.)的解决办法
  10. SIYI AK28 遥控器接收机的SBUS口与STM32通讯
  11. newifi3刷机 php,新路由3(newifi d2)刷老毛子固件教程-路由器交流
  12. NoClassDefFoundError: ch/qos/logback/classic/spi/ThrowableProxy
  13. 高效扫频水处理器原理介绍
  14. 信奥赛1990:【19CSPS提高组】划分
  15. 从0到1做好KOL运营实操
  16. 【Ubuntu安装后基本配置】
  17. IT行业怎么了?程序员按时上下班也被开除
  18. python对单个数字或者数组取对数和指数
  19. P4766 Outer space invaders
  20. USACO 2012 January Contest, Silver Division Solution

热门文章

  1. 深度学习的实用层面 —— 1.10 梯度消失与梯度爆炸
  2. Multi-thread--C++11中std::mutex的使用
  3. SpringMVC 运行原理及主要组件
  4. Skywalking-13:Skywalking模块加载机制
  5. Redmine Gantt 实现 (Show relations in Gantt diagram)
  6. 如何才能做出一个顶级的客户端
  7. 北京市2021年高考适应性测试成绩查询,2021年新高考适应性考试成绩怎么查?八省联考成绩可以保留吗?...
  8. 服务器信号怎么设置好,手机这样设置,WIFI信号马上提高!
  9. java用中点画圆法_OpenGL通过中点法绘制直线和圆
  10. 微信气泡主题设置_微信猫和老鼠主题怎么弄?猫和老鼠聊天气泡主题设置教程...