Given the root of a binary tree, return the average value of the nodes on each level in the form of an array. Answers within 10-5 of the actual answer will be accepted.
Example 1:
Input: root = [3,9,20,null,null,15,7]
Output: [3.00000,14.50000,11.00000]
Explanation: The average value of nodes on level 0 is 3, on level 1 is 14.5, and on level 2 is 11.
Hence return [3, 14.5, 11].
The number of nodes in the tree is in the range [1, 104].
-231 <= Node.val <= 231 - 1
Solutions
Solution 1: BFS
We can use the Breadth-First Search (BFS) method to traverse the nodes of each level and calculate the average value of each level.
Specifically, we define a queue $q$, initially adding the root node to the queue. Each time, we take out all the nodes in the queue, calculate their average value, add it to the answer array, and then add their child nodes to the queue. Repeat this process until the queue is empty.
The time complexity is $O(n)$, and the space complexity is $O(n)$. Here, $n$ is the number of nodes in the binary tree.
1 2 3 4 5 6 7 8 9101112131415161718192021
# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclassSolution:defaverageOfLevels(self,root:Optional[TreeNode])->List[float]:q=deque([root])ans=[]whileq:s,n=0,len(q)for_inrange(n):root=q.popleft()s+=root.valifroot.left:q.append(root.left)ifroot.right:q.append(root.right)ans.append(s/n)returnans