【leetcode】637. 二叉树的层平均值

题目描述:

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

示例 1:

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

分析:

了解输入是什么样的?

TreeNode{val: 3, left: TreeNode{val: 9, left: TreeNode{val: 15, left: None, right: None}, right: TreeNode{val: 7, left: None, right: None}}, right: TreeNode{val: 20, left: None, right: None}}
发现是一个根节点的val,和左右子树
那么只要取出当前层所有的val即可
解题:
class Solution:
    def averageOfLevels(self, root: TreeNode) -> List[float]:
        cur_layer = [root]
        res=[]
        while(cur_layer):
            n=len(cur_layer)
            temp=[]
            sumT=0
            for i in cur_layer:
                sumT += i.val
                if(i.left):
                    temp.append(i.left)
                if(i.right):
                    temp.append(i.right)
            cur_layer = temp
            res.append(sumT/n)
        return(res)

 

 

posted @ 2020-04-22 23:11  Flora1014444  阅读(100)  评论(0编辑  收藏  举报