题目地址(637. 二叉树的层平均值)
https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/
题目描述
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例 1:输入:3/ \9 20/ \15 7输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。提示:节点值的范围在32位有符号整数范围内。
前置知识
公司
- 暂无
思路
关键点
代码
- 语言支持:Java
Java Code:
/*** 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 {public List<Double> averageOfLevels(TreeNode root) {ArrayList<Double> res = new ArrayList<>();Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);int size = 0;double num = 0.0;while (!queue.isEmpty()) {size = queue.size();num = 0.0;for (int i = 0; i < size; i++) {TreeNode poll = queue.poll();num += poll.val;if (poll.left != null) {queue.offer(poll.left);}if (poll.right != null) {queue.offer(poll.right);}}res.add(num/size);}return res;}}
复杂度分析
令 n 为数组长度。
- 时间复杂度:
#card=math&code=O%28n%29&id=rXOnJ)
- 空间复杂度:
#card=math&code=O%28n%29&id=Hr1tL)
