package LeetCode_637 import LeetCode_297.TreeNode import java.util.* import kotlin.collections.ArrayList /** * 637. Average of Levels in Binary Tree * https://leetcode.com/problems/average-of-levels-in-binary-tree/description/ * Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array. * */ class Solution { /* * solution: BFS, Time complexity:O(n), Space complexity:O(n) * */ fun averageOfLevels(root: TreeNode?): DoubleArray { val list = ArrayList<Double>() if (root == null) { return DoubleArray(0) } val queue = LinkedList<TreeNode>() queue.add(root) while (queue.isNotEmpty()) { val size = queue.size var sum = 0.0 for (i in 0 until size) { val cur = queue.pop() sum += cur.`val` if (cur.left != null) { queue.offer(cur.left) } if (cur.right != null) { queue.offer(cur.right) } } list.add(sum / size) } val result = DoubleArray(list.size) var index = 0 for (item in list) { result.set(index, item) index++ } return result } }