leetcode_637 二叉树的层平均值

89 阅读1分钟

要求

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

示例 1:

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

详细代码

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
        
class Solution:
    def averageOfLevels(self, root: Optional[TreeNode]) -> List[float]:
        if not root:
            return []
        next_layer = [root.left,root.right]
        result = [float(root.val)]

        while next_layer:
            temp_next_layer = []
            layer_values = []

            for node in next_layer:
                if not node:
                    continue
                
                temp_next_layer.append(node.left)
                temp_next_layer.append(node.right)
                layer_values.append(node.val)
            
            next_layer = temp_next_layer
            
            if layer_values:
                result.append(sum(layer_values)/len(layer_values))
        
        return result

image.png

解题思路:这个是树的层次遍历,和上一题树行最大值一样,进行层次遍历,得到一层的所有值,进行平均值计算即可。