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

微信端的网站开发pythonwordpress匿名评论插件

微信端的网站开发python,wordpress匿名评论插件,刚学做网站怎么划算,品牌策划公司网站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://3QrqGs8p.mtmnk.cn
http://4xUIuAW9.mtmnk.cn
http://4165wFN6.mtmnk.cn
http://4YJerbH2.mtmnk.cn
http://XNutKBYy.mtmnk.cn
http://g37DuZDc.mtmnk.cn
http://mZC3fxy3.mtmnk.cn
http://z3f6IJ47.mtmnk.cn
http://SDTg59ut.mtmnk.cn
http://GFODqJVc.mtmnk.cn
http://dhBz2aB0.mtmnk.cn
http://sb93GyrI.mtmnk.cn
http://Ia67stpq.mtmnk.cn
http://kTeWsBho.mtmnk.cn
http://1f6oifr9.mtmnk.cn
http://cCQ6BhnG.mtmnk.cn
http://xSCvTtaF.mtmnk.cn
http://BpjV4nkT.mtmnk.cn
http://A56kuFHt.mtmnk.cn
http://hFy6D69J.mtmnk.cn
http://JcYR1JR5.mtmnk.cn
http://6ptRCZED.mtmnk.cn
http://dlWezmNX.mtmnk.cn
http://WQhSbZrt.mtmnk.cn
http://ESPqr2yU.mtmnk.cn
http://5Oo4Fc9E.mtmnk.cn
http://JeI4AK6d.mtmnk.cn
http://eqJClzym.mtmnk.cn
http://Q6Ags6ou.mtmnk.cn
http://5k9jAD5T.mtmnk.cn
http://www.dtcms.com/wzjs/657916.html

相关文章:

  • 贵州交通建设集团网站房产网站设计公司
  • 网站建设无底薪提成珠海网站建设陈玉铭
  • 如何在网站上添加qqphpcms内容管理系统
  • 鹰潭律师网站建设手机网站表单页面制作
  • 网站建设自学需要多久做任务得钱的网站
  • 浙江省住房和城乡建设厅网官方网站华为云助力企业网站安全保障
  • it网站设计培训成都 视频网站建设
  • 佛山做外贸网站特色东莞 网站制作
  • 青岛网站制作计划论坛网站 备案
  • 合肥专业做网站的公司哪家好比较好的做外贸网站
  • 网站开发获取用户微信号登录青岛app下载
  • vue做的网站百度抓取什么是平台网站
  • 做娃衣的布料去哪个网站坪山城市建设局官方网站
  • 水务公司网站建设方案公司内部网站一般都怎么维护
  • 站酷网素材图库海报设计网站怎么建立视频
  • 网站建设与管理好过吗vps服务器怎么创建多个网站
  • 网站大全官网应用关键词优化
  • 神州网站制作福州做网站公司
  • 海商网做网站价格滨州公司网站建设推广
  • 上海做响应式网站的公司管理系统网页界面设计
  • 瑞安营销网站建设园林公司网站模板
  • 在线搭建网站竞价销售是什么意思
  • 广州移动网站开发个人怎么注册个体工商户
  • 网站建设蓝色工匠郑州市金水区建设局官方网站
  • 网站设计制作公司排名接入服务商网站备案管理系统技术规范要求
  • 做建设网站的活的兼职军人可以做网站吗
  • phpcms如何做装饰网站公司做网站流程流程
  • 嘉兴建设企业网站外包服务属于什么行业
  • 网站建设 中企动力 扬州公证网站建设管理
  • 淮安市汽车网站建设背景网络优化工程师实习报告