博客
关于我
LeetCode 637 二叉树的层平均值-简单
阅读量:474 次
发布时间:2019-03-06

本文共 1181 字,大约阅读时间需要 3 分钟。

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

方法思路

为了解决这个问题,我们需要遍历二叉树的每一层,并计算每层的节点平均值。以下是实现该方法的详细步骤:

  • 遍历树的每一层:使用深度优先搜索(DFS)遍历树。每当访问一个节点时,记录它所在的层数。
  • 记录每层的总和和节点数:使用两个辅助数组,一个记录每层的总和,另一个记录每层的节点数。这样可以避免每次都预先分配太多空间,提高效率。
  • 计算每层的平均值:遍历每层,计算每层的平均值,即总和除以节点数。
  • 返回结果数组:将每层的平均值组成一个数组返回。
  • 解决代码

    #include 
    #include
    using namespace std;vector
    averageOfLevels(TreeNode* root) { vector
    cnt; vector
    sum; dfs(root, 0, cnt, sum); vector
    ave; for (int i = 0; i < sum.size(); ++i) { ave.push_back(sum[i] / cnt[i]); } return ave;}void dfs(TreeNode* root, int lev, vector
    & cnt, vector
    & sum) { if (root == nullptr) return; if (lev < sum.size()) { sum[lev] += root->val; cnt[lev] += 1; } else { sum.push_back(static_cast
    (root->val)); cnt.push_back(1); } dfs(root->left, lev + 1, cnt, sum); dfs(root->right, lev + 1, cnt, sum);}

    代码解释

  • averageOfLevels函数:这是主函数,负责调用递归函数并处理结果。它初始化两个向量cntsum,分别记录每层的节点数和总和。
  • dfs函数:这是递归函数,用于深度优先搜索遍历树。每次递归调用时,处理当前节点,根据当前层数更新sumcnt。如果层数超过当前sum的大小,扩展sumcnt,并添加新的层的值。
  • 计算平均值:遍历sumcnt,计算每层的平均值并存储到ave向量中,最终返回这个向量。
  • 该方法确保了每层节点的平均值被正确计算,并且代码高效且易于理解。

    转载地址:http://rphdz.baihongyu.com/

    你可能感兴趣的文章
    Jupyter notebook 使用、上手
    查看>>
    mysql8.0及以上在my.cnf设置sql_mode之后mysql无法启动
    查看>>
    C语言编译错误列表
    查看>>
    万倍币传说不再,价值回归
    查看>>
    这可能是后浪们逆袭的唯一机会
    查看>>
    观点 | COMP的流动性挖矿并非万能解药
    查看>>
    Uniswap之后的下一个爆点?Aave启用新的治理平台,即将开启代币迁移
    查看>>
    尽管DeFi项目数量下降,但总价值却仍在不断攀升
    查看>>
    泰国修改净资本规则,允许证券公司持有加密货币等数字资产
    查看>>
    Bakkt完成1.82亿美元首轮融资,这家交易所凭什么这么牛?
    查看>>
    每天维护费700多万美元!比特币当之无愧是“最安全区块链”
    查看>>
    看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
    查看>>
    6大亮点抢先看!Facebook加密货币项目Libra白皮书解读
    查看>>
    比特币回调至6000美元?分析师表示“很有可能”
    查看>>
    数字印钞界迎来重磅精英机构,普通人还有翻身机会吗? | 加密货币与阶层穿越...
    查看>>
    Dharma暴跌过度解读了吗?去中心化不足,模式难持续是关键
    查看>>
    Ps中的合图过程
    查看>>
    Java初识和开发环境搭建
    查看>>
    Wordpress主题Git后台清净模式设置
    查看>>
    JQuery获取元素的方法总结
    查看>>