算法:二叉树的层平均值

news/2024/7/24 3:15:27

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

输入:
    3
   / \
  9  20
    /  \
   15   7
输出:[3, 14.5, 11]

题解
也就是遍历树结构,广度优先。
1,用一个数组,将第一层都装进去。
2,将此数组求平均值
3,用当前数组的每一个元素,获取下一层的元素,装入数组中。只切当前一层的元素
重复以上步骤

代码

# 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]:

        head = root
        level = [head]
        res = []

        while level:
            sumLevel = 0
            size = len(level)
            for i in level:
                if i:
                    sumLevel += i.val
            res.append(float(sumLevel/size))
            
            for i in level[:size]:
                if i:
                    left = i.left
                    right = i.right
                    if left:
                        level.append(left)
                    if right:
                        level.append(right)
            level = level[size:]
        return res



http://www.niftyadmin.cn/n/1845044.html

相关文章

element-ui利用jsx语法自定义table表头

element-ui利用jsx语法自定义table表头 1. 需求 需要自定义如下表头 2. table表头 这里说一下render-header属性,这是官网给出的解释 这是我的表头 3. jsx自定义表头 Game over

算法:leetocde79. 单词搜索

给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 执行起来暂时没问题&#…

fullPage.js 实现点击按钮滚动一屏的效果

fullPage.js 实现点击按钮滚动一屏的效果 afterRender() 这个回调函数只是在生成页面结构的时候调用。这是要用来初始化其他插件或删除任何需要的文件准备好代码的回调(这个插件修改DOM创建得到的结构)。 afterRender: function () {$(点击事件).click…

报错 no such file or directory, scandir ...\node-sass\vendor'

背景: 公司让给一个Vue项目加一个模块,拿到代码之后,安装依赖,第一步就已经报错了,头疼 throw er; // Unhandled error event^查了很久发现是端口号被占了,重新安装或者把其他项目给关掉就应该可以了。 依…

算法:中序遍历

分析: 中序遍历,就是先遍历二叉树的 左节点,再取顶节点,再取右节点。 如图: 那从一个最小的二叉树扩展开以后,也是一个道理: 如下图,遍历顺序1-2-3-4-5-6 算法: 1&#x…

echarts tooltip自动轮播

echarts tooltip自动轮播 需求:实现图表的tootip自动轮播 原理:用到dispatchAction方法,以下是echarts上的介绍 初始化data this.myChart.dispatchAction({ type: showTip,seriesIndex: 0,dataIndex: 0 });轮播定时 let idx 1; setInterv…

算法:早餐组合

题目: 小扣在秋日市集选择了一家早餐摊位,一维整型数组 staple 中记录了每种主食的价格,一维整型数组 drinks 中记录了每种饮料的价格。小扣的计划选择一份主食和一款饮料,且花费不超过 x 元。请返回小扣共有多少种购买方案。 注…

如何让Beyond Compare进行内容替换

在使用办公软件处理文本文件时,大家常常会用到查找和替换功能,可以帮助我们快速的改动文章中的内容。Beyond Compare软件也是一款好用的合并文本的工具,在使用Beyond Compare中文版进行文本合并的同时,或多或少都会有需要编辑和修…