LeetCode average Of Levels in Binary Tree

来源:互联网 发布:淘宝联盟客服热线 编辑:程序博客网 时间:2024/06/05 21:04

Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.

Example 1:

Input:    3   / \  9  20    /  \   15   7Output: [3, 14.5, 11]Explanation:The average value of nodes on level 0 is 3,  on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].

题解:

此题我们可以直接通过层次遍历,对每一层所有节点求和,然后求其平均值,按照每一层的顺序放在一个数组中输出。代码如下,主要借鉴层次遍历的思路。

public class averageOfLevels{    public List<Double> averageOfLevels(TreeNode root)    {        List<Double> list = new ArrayList<>();        if(root == null)            return list;        Queue<TreeNode> queue = new LinkedList<TreeNode>();        queue.add(root);        int length = queue.size();        while(!queue.isEmpty())       //两层循环        {            //List<Double> li = new ArrayList<>();            double num = 0;            int len = length;            while(length-- > 0)            {                TreeNode node = queue.poll();                num += (double)node.val;                if(node.left != null)                    queue.add(node.left);                if(node.right != null)                    queue.add(node.right);            }            list.add(num / len);            length = queue.size();        }        return list;    }}








原创粉丝点击