当前位置: 首页 > 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.yayakq.cn/news/883481/

相关文章:

  • 中国建设银行湖北省分行网站兖州网站建设
  • 个体户可以做网站吗北京系统开发
  • 赣榆区城乡建设局网站做公司 网站
  • 宁津 做网站wordpress自带轮播
  • 南昌做网站哪家专业商务
  • 制作小程序和网站的公司建立企业门户网站建设
  • 网站的seo相关指标ppt制作最常用软件
  • 青岛 制作网站 大点的公司哪些网站被墙
  • 怎么做网盘搜索引擎网站关于宠物的网站网页设计
  • 国内网站设计制作php旅游网站论文
  • 登封哪里有做网站的邯郸市建设局
  • 教务系统网站建设模板下载cc wordpress
  • 长沙手机网站开发烟台网站建设电话
  • 自己做网站上传视频赣州品牌网站建设
  • 网站建设管理人员工作职责html5国内网站欣赏
  • 衡阳做网站建设的公司2021ppt模板免费下载 素材
  • 霸州住房和城乡建设厅网站怎样在微信里做网站
  • iview做的网站wordpress安装云服务器
  • 智林东莞网站建设公司公众号开发是前端还是后端
  • 网站设计 注意加速游戏流畅的软件
  • 小米路由器做网站网站建设如何导入音乐
  • 做网站与不做网站的区别网络优化工程师招聘信息
  • 什么事三合一网站东莞市网络公司
  • 网站流量与广告费商城网站html模板
  • 广州网站建设说说外链的建设行业网站程序
  • 海外购物网站建设银川网站建设培训哪家好
  • wordpress文档插件搜索引擎优化策略
  • 视频网站的防盗链是怎么做的濮阳做网站
  • 长洲网站建设优秀网站介绍
  • 怎么做网站访问截取ip网站辅助导航