Leetcode 637 questions binary tree layer average

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.

Guess you like

Origin blog.csdn.net/qq_45789385/article/details/102747486