637. 二叉树的层平均值(Python)

题目

难度:★★☆☆☆
类型:树

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

注意:节点值的范围在32位有符号整数范围内。

示例

输入:

    3
   / \
  9  20
    /  \
   15   7

输出: [3, 14.5, 11]
解释:
第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].

解答

这道题实际上是二叉树的层次遍历,计算每一层的结点均值即可。

class Solution:
    def averageOfLevels(self, root):
        if not root:
            return []                                   # 如果输入空树,直接返回空列表

        cur_layer = [root]                              # 根节点放进当前层列表
        res = []                                        # 结果列表,存放各层均值
        while cur_layer:                                # 当前层不为空时,执行
            # 将当前层结点平均值添加到结果中
            res.append(sum(node.val for node in cur_layer) / len(cur_layer))

            next_layer = []                             # 当前层结点列表初始化为空
            for node in cur_layer:                      # 遍历上一层结点列表中的各个结点

                if node.left:                           # 如果存在左子树
                    next_layer.append(node.left)        # 添加左孩子到下一层列表
                if node.right:                          # 如果存在右子树
                    next_layer.append(node.right)       # 添加右孩子到下一层列表

            cur_layer = next_layer                      # 更新上一层结点列表

        return res                                      # 返回结果列表

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(637. 二叉树的层平均值(Python))