[Layer order traversal] 637. Layer average of binary tree

637. Layer Average of a Binary Tree

problem solving ideas

  • Level order traversal of binary tree
  • Accumulate the node values ​​​​of each layer and then average
  • Add the average value of each layer to the list Return

class Solution {
    
    
    public List<Double> averageOfLevels(TreeNode root) {
    
    
        // 二叉树的层序遍历

        List<List<Integer>> result = new ArrayList<>();
        if(root == null){
    
    
            return new ArrayList<>();
        }


        Queue<TreeNode> q = new LinkedList<>();
        q.offer(root);

        List<Double> list = new ArrayList<>();
        while(!q.isEmpty()){
    
    
            int size = q.size();
            // list = new ArrayList<>();
            double sum = 0;

            for(int i = 0; i < size; i++){
    
    
                TreeNode cur = q.poll();// 出队
                sum += cur.val;

                if(cur.left != null){
    
    
                    q.offer(cur.left);
                }

                if(cur.right != null){
    
    
                    q.offer(cur.right);
                }
            }

            sum /= size;
            list.add(sum);
        }


        return list;
    }
}

Guess you like

Origin blog.csdn.net/qq_44653420/article/details/132508359