题目:给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.
代码
class Solution {
public List<Double> averageOfLevels(TreeNode root)
{
help(root,0);
List<Double> li =new ArrayList();
for(int i=0;i<list.size();i++)
{
double nums =0;
for(int j=0;j<list.get(i).size();j++)
{
nums+=list.get(i).get(j);
}
li.add(nums/list.get(i).size());
}
return li;
}
List<List<Integer>> list = new ArrayList();
public void help(TreeNode root,int lev)//层次遍历,存储值
{
if(root==null)
return;
List<Integer> lists = new ArrayList();
if(list.size()-1<lev)
list.add(lists);
list.get(lev).add(root.val);
help(root.left,lev+1);
help(root.right,lev+1);
}
}
首先我们创建list,存储所有节点值,同一层节点存储在同一个元素中,然后对每个元素中的元素求平均值,存入li中,返回即可。