LeetCode-Python-637. 二叉树的层平均值

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.

示例 1:

输入:
    3
   / \
  9  20
    /  \
   15   7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3,  第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].

思路:

把每一层的所有节点的值放在一个数组里,再计算这个数组的均值加到result数组里即可。

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def averageOfLevels(self, root):
        """
        :type root: TreeNode
        :rtype: List[float]
        """
        if not root:
            return []
        next_layer = [root.left, root.right]
        result = [float(root.val)]
        
        while(next_layer):
            temp_next_layer = list()
            layer_value = list()
            for node in next_layer:
                if not node:
                    continue
                temp_next_layer.append(node.left)
                temp_next_layer.append(node.right)
                layer_value.append(node.val)
            if layer_value:
                result.append(sum(layer_value) / float(len(layer_value)))
            next_layer = temp_next_layer
        return result
        

 

你可能感兴趣的:(Leetcode,Python)