Topic: Given a non-empty binary tree, return an array consisting of the average value of each level of nodes.
Code
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);
}
}
First, we create a list, store all node values, store the nodes of the same level in the same element, then average the elements in each element, store it in li, and return.