原题
Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.
Example 1:
Input:
3
/
9 20
/
15 7
Output: [3, 14.5, 11]
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].
Note:
The range of node’s value is in the range of 32-bit signed integer.
解法
BFS. 按层将每层节点放入列表中, 求每层的平均值.
Time: O(n)
Space: O(n)
代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def averageOfLevels(self, root: TreeNode) -> List[float]:
ans = []
if not root:
return ans
q = [root]
while q:
ans.append(sum([node.val for node in q])/len(q))
q = [kid for node in q for kid in (node.left, node.right) if kid]
return ans