二叉树的层平均值

博客链接: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;
    }
}

 

posted @ 2020-05-22 16:39  萍2樱释  阅读(222)  评论(0编辑  收藏  举报