637. 二叉树的层平均值

发布时间 2023-12-24 16:45:30作者: Frommoon

题目

  • 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。

题解:BFS

class Solution:
    def averageOfLevels(self, root: Optional[TreeNode]) -> List[float]:
        q=[root]#用列表做队列
        res=[]#结果列表
        while q:
            size = len(q)
            m=0#每一层的平均值
            for _ in range (size):
                cur=q.pop(0)#弹出队列第一个原素
                m+=cur.val#先求每一层的和
                if cur.left:
                    q.append(cur.left)#如果有左孩子,加入队列
                if cur.right:
                    q.append(cur.right)#如果有右孩子,加入队列
            m=float(m/size)#用每一层的和除每一层的个数为每一层的平均数,转换为浮点型
            res.append(m)#把每一层的平均值加入到结果列表
        return res