给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
示例 1:
输入:
3
/
9 20
/
15 7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11]。
注意:
- 节点值的范围在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); } }
对,用队列更好一点!!!