当前位置: 首页 > news >正文

武汉网站建设外包免费推广平台

武汉网站建设外包,免费推广平台,网站验证图标,建立网站项目分析 根据平衡二叉树的定义,只需要满足:1、根节点两个子树的高度差不超过1;2、左右子树都为平衡二叉树 代码 public class BalancedBinaryTree {public class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){}TreeNode(int va…

分析

根据平衡二叉树的定义,只需要满足:1、根节点两个子树的高度差不超过1;2、左右子树都为平衡二叉树

代码

public class BalancedBinaryTree {public class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){}TreeNode(int val){this.val = val;}}public boolean isBalanced(TreeNode root) {if(root == null){return true;}//判断左子树是否为平衡二叉树int leftH = getHeight(root.left);//判断右子树是否为平衡二叉树int rightH = getHeight(root.right);//当满足三个条件时返回turereturn Math.abs(leftH-rightH)<2&&isBalanced(root.left)&&isBalanced(root.right);}//获取树的高度public int getHeight(TreeNode root){if(root == null){return 0;}//获取左子树高度int leftH = getHeight(root.left);//获取右子树高度int rightH = getHeight(root.right);//返回左右子树的最大值+1(加上根节点高度),即为树的高度return ((leftH > rightH) ? (leftH+1):(rightH+1));}
}

进行优化

但是这样的做法,每对一个结点进行平衡判定就要求一次 以该结点为根节点的树的高度。时间复杂度太大

所以我们在求高度的时候就进行判定是否平衡。 


在求高度的时候就进行平衡判定,如果其中一颗子树不平衡,就直接返回-1(因为高度是不能为-1的),子树为空则返回0。

如下图所示。对于3为根节点的二叉树,左树返回1,右树返回0;然后对于9为根节点的二叉树,左子树返回2,右子树返回0;对于以3为根节点的二叉树,左子树返回-1(说明左子树不平衡),右子树返回-1(说明右子树不平衡),所以以3为根节点的二叉树返回-1.

同时要注意:存在一个根节点,其左子树不平衡返回-1,右子树为空返回0,但此时左右子树高度差的绝对值还是1.所以我们要对此做出限制

 优化后的代码

public class Test3 {public class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){}TreeNode(int val){this.val = val;}}public boolean isBalanced(TreeNode root) {return getHeight(root) >= 0;}//获取树的高度public int getHeight(TreeNode root){if(root == null){return 0;}//获取左子树高度int leftH = getHeight(root.left);//获取右子树高度int rightH = getHeight(root.right);/*如果一个节点左树不平衡(返回-1),右树为空(返回0)。它不是个平衡二叉树,但是它满足左右子树高度差为1* 所以这里限制左右子树高度都大于0*/if (leftH >= 0 && rightH >= 0 &&Math.abs(leftH - rightH)<=1){return Math.max(leftH,rightH)+1;}else {return -1;}/*为什么不能在第一个不平衡的二叉树出现时就结束?* 因为你是判断高度的方法,不是判断平衡的方法。* false应该在另一个方法中被返回*/}
}

http://www.ds6.com.cn/news/19648.html

相关文章:

  • 电商网站开发prd互联网营销师课程
  • 蚌埠网站建设哪家好网上广告宣传怎么做
  • 开平网络推广seo搜索优化工程师招聘
  • 大背景类型的网站设计求职seo服务
  • 怎样做微商网站58同城安居客
  • 免费公司网站怎么做大数据精准营销
  • 重庆seo薪酬水平北京厦门网站优化
  • 哪个网站是教人做淘宝客的四川成都最新消息
  • 杭州建筑设计公司排名旅游企业seo官网分析报告
  • 做的好的旅游网站互联网营销师培训班
  • 房产网站流量排名优化大师有用吗
  • 北京市网站制作设计官网seo优化找哪家做
  • 手机访问不了自己做的网站吗谷歌推广哪家好
  • 瑞金网站建设百度推广怎么做最好
  • 宁波建设网站多少钱河南专业网站建设
  • 交易 网站备案场景营销
  • 安徽省两学一做网站专栏上海关键词自动排名
  • 电子商务网站建设市场分析软文写作的基本要求
  • 无锡做家纺公司网站东莞优化疫情防控措施
  • 服装设计效果图郑州seo网络营销
  • 网站建设 厦门广州高端网站建设公司
  • 产品做推广一般上什么网站seo排名如何
  • 平台推广具体是干啥seo一个月工资一般多少
  • 淮安市汽车网站建设背景企业培训机构排名前十
  • 汕头网站定制无锡优化网站排名
  • wordpress怎么更换网站logo西安百度快照优化
  • 什么是嵌入式软件工程师引擎优化是什么工作
  • 深圳市社会保险网站百度搜索风云榜电脑版
  • 广州 网站建设网络推广网页设计seo网站关键词排名优化公司
  • 傻瓜做网站软件网站优化搜索排名