[leetcode] 637. Average of Levels in Binary Tree @ python

版权声明:版权归个人所有,未经博主允许,禁止转载 https://blog.csdn.net/danspace1/article/details/88712137

原题

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

猜你喜欢

转载自blog.csdn.net/danspace1/article/details/88712137