
LeetCode 637 二叉树的层平均值-简单
遍历树的每一层:使用深度优先搜索(DFS)遍历树。每当访问一个节点时,记录它所在的层数。 记录每层的总和和节点数:使用两个辅助数组,一个记录每层的总和,另一个记录每层的节点数。这样可以避免每次都预先分配太多空间,提高效率。 计算每层的平均值:遍历每层,计算每层的平均值,即总和除以节点数。 返回结果数组:将每层的平均值组成一个数组返回。 averageOfLevels函数:这是主函数,负责调用递归函数并处理结果。它初始化两个向量 dfs函数:这是递归函数,用于深度优先搜索遍历树。每次递归调用时,处理当前节点,根据当前层数更新 计算平均值:遍历
发布日期:2021-05-09 23:45:23
浏览次数:9
分类:精选文章
本文共 1181 字,大约阅读时间需要 3 分钟。
给定一个非空二叉树,返回一个由每层节点平均值组成的数组。
方法思路
为了解决这个问题,我们需要遍历二叉树的每一层,并计算每层的节点平均值。以下是实现该方法的详细步骤:
解决代码
#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);}
代码解释
cnt
和sum
,分别记录每层的节点数和总和。sum
和cnt
。如果层数超过当前sum
的大小,扩展sum
和cnt
,并添加新的层的值。sum
和cnt
,计算每层的平均值并存储到ave
向量中,最终返回这个向量。该方法确保了每层节点的平均值被正确计算,并且代码高效且易于理解。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月18日 12时24分00秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JMeter 中实现发送Java请求
2019-03-06
设计模式点滴
2019-03-06
数据库优化
2019-03-06
[备忘]域用户登陆出现“此工作站和主域间的信任关系失败”错误解决方法
2019-03-06
继续聊WPF——用Blend自定义Listview控件的列表头
2019-03-06
【WPF】制作自定义的列表项面板
2019-03-06
【.net 深呼吸】启动一个进程并实时获取状态信息
2019-03-06
OO_Unit2 多线程电梯总结
2019-03-06
json-lib的使用《二》
2019-03-06
LeetCode52题,别再问我N皇后问题了
2019-03-06
Swagger常用注解
2019-03-06
简单实用算法——字节位序反转
2019-03-06
webpack之带有可自动打开浏览器及热重载的基本配置
2019-03-06
前端的批量接口如何快速响应?有没有通用解决方案?
2019-03-06
Shader 入门笔记(一) 如何学习shader
2019-03-06
Huffman树及其编解码
2019-03-06
分布式、高并发、高性能场景(抢购、秒杀、抢票、限时竞答)数据一致性解决方案
2019-03-06
淘宝镜像
2019-03-06