【层序遍历】637. 二叉树的层平均值

637. 二叉树的层平均值

解题思路

  • 二叉树的层序遍历
  • 累加每一层的节点值 然后求平均值
  • 将每一层的平均值添加到list 返回

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;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44653420/article/details/132508359