博客
关于我
LeetCode 637 二叉树的层平均值-简单
阅读量:473 次
发布时间: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/

    你可能感兴趣的文章
    【哈希表】1. 两数之和
    查看>>
    【字符串】28. 实现 strStr()
    查看>>
    【栈和队列】232. 用栈实现队列
    查看>>
    安装Pyte失败的解决方法
    查看>>
    linux之压缩和解压
    查看>>
    搞懂ELK并不是一件特别难的事(ELK)
    查看>>
    斩荆披棘,我们走的关于程序的路
    查看>>
    操作ACCESS数据库注意事项
    查看>>
    分享在winform下实现模块化插件编程-优化版
    查看>>
    分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
    查看>>
    MVC模型(java)
    查看>>
    maven project 部署到tomcat时项目部署不上去
    查看>>
    [Unity][EXE]封装打包后怎么Debug错误显示output_log.txt
    查看>>
    使用promise封装wx:requset()
    查看>>
    StarkWare公司零知识证明验证程序ethSTARK已通过PeckShield全面安全审计服务
    查看>>
    图文追踪PlusToken资产转移行踪(一): BTC部分有1,203个流入交易所
    查看>>
    stm32h743iit6 cubmex 配置QSPI w25128模式问题
    查看>>
    让nginx支持文件上传的几种模式
    查看>>
    自定义的seekBar(二)
    查看>>
    快上车!Java技术开发大厂直通车马上启动!
    查看>>