每日一题20201124*(637. 二叉树的层平均值)

简介: 二叉树的层平均值

637. 二叉树的层平均值

27.jpg

image.png

思路



继续采用广度优先遍历的方式,只需要稍微调整一下代码即可。可以参考:

每日一题20201204(102. 二叉树的层序遍历)


# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def averageOfLevels(self, root: TreeNode) -> List[float]:
        if root is None:
            return []
        ans = []
        queue = [root]
        while len(queue) > 0:
            size = len(queue)
            # 记录这一层的总数
            total = 0
            for _ in range(size):
                current = queue.pop(0)
                total += current.val
                if current.left is not None:
                    queue.append(current.left)
                if current.right is not None:
                    queue.append(current.right)
            # ans数组添加进去平均值,不用担心size为0的问题,因为size肯定>0 
            # 因为queue后面的出队和入队已经不影响size了
            ans.append(total / size)
        return ans

28.jpg

image.png




相关文章
|
6月前
|
C++ Python
leetcode-637:二叉树的层平均值
leetcode-637:二叉树的层平均值
33 0
07_二叉树的层平均值
07_二叉树的层平均值
|
5月前
|
算法
【经典LeetCode算法题目专栏分类】【第4期】BFS广度优先算法:单词接龙、最小基因变化、二进制矩阵中的最短路径
【经典LeetCode算法题目专栏分类】【第4期】BFS广度优先算法:单词接龙、最小基因变化、二进制矩阵中的最短路径
【Leetcode -637.二叉树的层平均值 -671.二叉树中第二小的节点】
【Leetcode -637.二叉树的层平均值 -671.二叉树中第二小的节点】
54 0
算法训练Day21|530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先
算法训练Day21|530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先
算法训练Day40|343. 整数拆分 ● 96.不同的二叉搜索树
算法训练Day40|343. 整数拆分 ● 96.不同的二叉搜索树
|
算法
LeetCode每日一题--二叉树的最小深度
LeetCode每日一题--二叉树的最小深度
126 0
#leetcode 637二叉树的层平均值
#leetcode 637二叉树的层平均值
63 0
#leetcode 637二叉树的层平均值
|
算法
怒刷力扣( 二叉树的最小深度)
这个题的坑就是没有左右子树的时候,这个节点才是叶子节点,这时候计算的结果才是根节点到叶子节点的深度。
185 4
怒刷力扣( 二叉树的最小深度)