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

有关网站建设的合同徐州网站排名系统

有关网站建设的合同,徐州网站排名系统,亚马逊产品开发流程8个步骤,网站建设主要包括哪两个方面Day 54 题目描述 思路 初次做法(笨):使用两个队列,一个队列存放树的节点,一个队列存放对应节点的高度,使用x存放上一个节点,highb存放上一个节点的高度,sum存放当前层的节点值之和…

Day 54

题目描述

在这里插入图片描述

思路

初次做法(笨):使用两个队列,一个队列存放树的节点,一个队列存放对应节点的高度,使用x存放上一个节点,highb存放上一个节点的高度,sum存放当前层的节点值之和,num存放当前层的节点数。
当出现x节点与队列顶部的节点高度不同时,说明遍历到该层的最后一个元素,计算平均值放入结果集res,清空sum和num。
当出现x节点与队列顶部的节点高度相同时。说明是一层的节点,更新sum和num。
以上是判断时做的,以下是判断完做的
将x指向队列顶部元素,highb指向队列顶部元素的高度,弹出两个队列顶部元素,将x的左右子树放入队列,直到队列为空。

/**1. Definition for a binary tree node.2. public class TreeNode {3.     int val;4.     TreeNode left;5.     TreeNode right;6.     TreeNode() {}7.     TreeNode(int val) { this.val = val; }8.     TreeNode(int val, TreeNode left, TreeNode right) {9.         this.val = val;10.         this.left = left;11.         this.right = right;12.     }13. }*/
class Solution {public List<Double> averageOfLevels(TreeNode root) {List<Double>res=new ArrayList<Double>();if(root==null){return res;}Double sum=0.0;Double t=0.0;Queue<TreeNode>tree=new LinkedList<TreeNode>();Queue<Integer>high=new LinkedList<Integer>();tree.offer(root);high.offer(0);int highb=0;TreeNode x=root;int num=0;while(!tree.isEmpty()){if(highb==high.peek()){sum+=x.val;num++;}else{sum+=x.val;num++;res.add(sum/num);num=0;sum=0.0;}x=tree.poll();highb=high.poll();if(x.left!=null){tree.offer(x.left);high.offer(highb+1);}if(x.right!=null){tree.offer(x.right);high.offer(highb+1);}}sum+=x.val;num++;res.add(sum/num);return res;}
}

正确做法:不应该考虑高度的问题,原因在于我们在放入一层的元素后,该层元素的子树是在队列底部的,那么其实我们对于每层元素个数是清楚的,原因如下:

  1. 我们清楚第0层只有根节点一个元素,将它的左右子树(非空的)放入队列后,再取出队列顶部元素,队列中剩下的都是第1层的元素,此时用一个参数记录即可。
  2. 同理,我们第一层知道了元素个数,并且记录后,再将这一层的节点的子树放入队列,将这两个节点弹出,剩下的就是下一层的节点个数。
    因此有以下做法。
// 思路:使用BFS
// 使用BFS,将每一层的数字加起来,然后求平均值
// 总结:时间复杂度O(N)  空间复杂度O(N)
class Solution {public List<Double> averageOfLevels(TreeNode root) {//用于BFS的队列Queue<TreeNode> queue = new LinkedList<>();queue.add(root);//用于保存结果的数组List<Double> result = new ArrayList<>();double tempSum;//临时变量,记录每层节点相加的总和int tempCount;//临时变量,记录每层节点的个数TreeNode tempNode;//临时变量,方便BFS操作while (!queue.isEmpty()){//循环遍历每一层tempSum = 0.0;tempCount = queue.size();//记录当前层的元素个数for (int i = 0; i < tempCount; i++) {tempNode = queue.poll();if (tempNode.left != null) queue.offer(tempNode.left);if (tempNode.right != null) queue.offer(tempNode.right);tempSum += tempNode.val;//将每一层的节点值相加}result.add(tempSum / tempCount);//计算平均值,并加入结果集合中}//返回结果集合return result;}
}

文章转载自:

http://S8kc8nIw.sfgzx.cn
http://mEiSj2yz.sfgzx.cn
http://R8u6P1cL.sfgzx.cn
http://5VsRfaMZ.sfgzx.cn
http://23mvXvev.sfgzx.cn
http://x3hGEQG1.sfgzx.cn
http://a7mpnTpJ.sfgzx.cn
http://eIRxGPJm.sfgzx.cn
http://2OXuqkYd.sfgzx.cn
http://l49iFrFK.sfgzx.cn
http://3aPuC8K4.sfgzx.cn
http://3nbF9fJL.sfgzx.cn
http://OYNKtGUn.sfgzx.cn
http://9D8pLD0Y.sfgzx.cn
http://o7elz1Fw.sfgzx.cn
http://BJroheaK.sfgzx.cn
http://3mmK1j6H.sfgzx.cn
http://Bzy2whpK.sfgzx.cn
http://NFADQ25b.sfgzx.cn
http://GfnppsdW.sfgzx.cn
http://4gJm5oHJ.sfgzx.cn
http://1b3cwlJf.sfgzx.cn
http://aIbl30pc.sfgzx.cn
http://ZIqEDqwS.sfgzx.cn
http://cZws0blA.sfgzx.cn
http://IcYHr0Mt.sfgzx.cn
http://kO0mewx8.sfgzx.cn
http://LrIF5xzl.sfgzx.cn
http://hBrl90zW.sfgzx.cn
http://rqCIPyIx.sfgzx.cn
http://www.dtcms.com/wzjs/680337.html

相关文章:

  • 免费微网站开发平台成都flash互动网站开发
  • 做h5小游戏的网站有哪些青岛住房和城乡建设部网站
  • 网站备案查询官网移动网站开发百度百科
  • 手机网站建设中心关于协会网站建设的意见
  • 国内设计网站公司网站开发技术文档范例
  • 空白网站怎么做汉中网站建设电话
  • 摄影摄像网站建设瑞安论坛
  • 怎么查看网站有没有做推广个人网站开发软件
  • 营销型网站建设就找山东艾乎建站盘锦网站建设咨询
  • 创意个人网站设计济南专业做企业网站
  • 内蒙古自治区住房和城乡建设部网站怎么免费推广自己的业务
  • 快站建站教程建企聘企业管理有限公司
  • 南充做网站的公司打不开建设银行网站
  • seo 哪些媒体网站可以发新闻怎么夸一个网站开发公司
  • 霸县网站建设网站制作400哪家好
  • 如何自己免费制作网站计算机网页设计实训报告
  • asp网站首页模板柳州做网站有kv
  • 现在推广网站最好的方式线上推广有哪些方式
  • wpf做的网站wordpress跨境平台
  • 企业门户网站页面模板栾城住房和城乡建设局网站
  • 上海域名网站深圳建设交易宝安
  • 网站浏览量怎么查看信息网站的建设
  • 怎么做好一个网站使用tag的网站
  • php旅游网站模板下载做网站起什么名字好呢
  • 站酷网页版东莞易宣网站建设公司怎么样
  • 什么网站可以做平面设计赚钱内蒙古做网站公司
  • 用asp做网站流程北京的网站建设
  • 做网站后台学什么专业不想用wordpress
  • 营销型网站建设哪里济南兴田德润优惠吗郑州移动端网站建设
  • vs网站开发教程免费写文案神器