二叉树的层平均值
博客链接:https://www.cnblogs.com/ping2yingshi/p/12938065.html
二叉树的层平均值
题目链接:https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.
示例 1:
输入:
3
/ \
9 20
/ \
15 7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].
题解:
思路:
1.定义一个数组和一个队列。
2.把每层上的节点存入到队列中。
3.记录每层节点个数。
4.取出列表中每层节点的数。
5.对每层节点求和。
6.判断每层节点的左子树和右子树是否为空,不为空,把左右子树加入到队列中。作为新的一层节点数。
代码如下:
class Solution { public List<Double> averageOfLevels(TreeNode root) { List<Double> list=new ArrayList<>(); Queue<TreeNode> queue=new LinkedList<>(); queue.add(root); while(!queue.isEmpty()){ double sum=0; int len=queue.size(); for(int i=0;i<len;i++) { TreeNode que=queue.poll(); sum+=que.val; if(que.left!=null) queue.offer(que.left); if(que.right!=null) queue.offer(que.right); } list.add(sum/len); } return list; } }
出来混总是要还的