烟_火
人间烟火何不尝

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。

示例 1:

输入:
3
/ \
9 20
/ \
15 7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11]。

注意:

  1. 节点值的范围在32位有符号整数范围内。
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<Double> averageOfLevels(TreeNode root) {
        List<Double> returnList = new ArrayList<Double> () ;
        List<TreeNode> aver = new ArrayList<TreeNode>();
        aver.add(root);
        return averNum(returnList, aver);
    }
    public List<Double> averNum(List<Double> returnList, List<TreeNode> aver)
    {
        List<TreeNode> tmp = new ArrayList<TreeNode>();
        double tmpNum = 0;
        int count = 0;
        if(aver.size() == 0)
        {
            return returnList;
        }
        for(int i = 0; i < aver.size(); i++)
        {
            tmpNum += (double)aver.get(i).val;
            count++;
            if(aver.get(i).left != null)
            {
                tmp.add(aver.get(i).left);
            }
            if(aver.get(i).right != null)
            {
                tmp.add(aver.get(i).right);
            }
        }
        double tmpAver = tmpNum/count;
        returnList.add(tmpAver);
        return averNum(returnList, tmp);
    }
}  

 

对,用队列更好一点!!!

posted on 2020-03-03 20:45  段流儿  阅读(83)  评论(0编辑  收藏  举报