手撕算法-二叉树的层平均值

描述

分析

二叉树的层序遍历。

层序遍历需要用到队列。

代码

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 * int val;
 * TreeNode left;
 * TreeNode right;
 * TreeNode() {}
 * TreeNode(int val) { this.val = val; }
 * TreeNode(int val, TreeNode left, TreeNode right) {
 * this.val = val;
 * this.left = left;
 * this.right = right;
 * }
 * }
 */
class Solution {
    List<Double> res = new ArrayList<>();

    public List<Double> averageOfLevels(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        bfs(queue);
        return res;
    }

    public void bfs(Queue<TreeNode> queue) {
        int len = queue.size(); // 获取这一层的节点数
        if(len == 0) return;

        long sum = 0; // 注意,放置int类型溢出,使用long型
        for (int i = 0; i < len; i++) {
            TreeNode node = queue.poll(); // 取出
            sum += node.val;
            if (node.left != null) {
                queue.offer(node.left); // 左节点放入队列 
            }
            if (node.right != null) {
                queue.offer(node.right); // 右节点放入队列
            }
        }

        res.add((double) sum / (double) len);

        bfs(queue);
    }
}

面试公司

相关推荐
辰烨chenye8 小时前
LeetCode Hot 100 题解 · 普通数组篇
算法·leetcode·职场和发展
hqyjzsb12 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
辰烨chenye12 小时前
LeetCode Hot 100 题解 · 二分篇
java·算法·leetcode
微功夫信息技术12 小时前
分层多智能体强化学习驱动的非急救转运公平 - 效率统一调度系统研究与实践
人工智能·学习·算法·动态规划
sanjiaomao33313 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
乐迪信息13 小时前
如何通过AI防爆摄像机精准判断船舶超速?
大数据·人工智能·算法·安全·目标跟踪
大圣编蚕14 小时前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法
小玮看世界15 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
黎阳之光15 小时前
数字孪生赋能全域水网,实现水资源管控与节水降碳双向提升
人工智能·物联网·算法·安全·数字孪生
随意起个昵称15 小时前
【BFS】冰面滑行
算法·宽度优先