LeetCode637.二叉树的层平均值
LeetCode题目链接:https://leetcode.cn/problems/average-of-levels-in-binary-tree/description/
题目叙述:
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
思路
这题我们依然是采用层序遍历,其实和二叉树的层序遍历没多大区别,遍历的时候插入每一层的平均值就够了!如果不会二叉树的层序遍历的话,可以去看看我之前的文章,里面详细讲述了二叉树的层序遍历
二叉树的层序遍历:https://www.cnblogs.com/Tomorrowland/articles/18314740
这题相比于二叉树的层序遍历,区别就是不需要设置current
数组,只需要遍历每一层时设置一个sum
,存储每一层的元素的总和,然后再将平均值放入数组中即可
AC代码如下:
//二叉树的层平均值 class Solution { public: vector<double> averageOfLevels(TreeNode* root) { vector<double> result; if (root == NULL) return result; queue<TreeNode*> que; que.push(root); while (!que.empty()) { int size = que.size(); //定义sum变量,存储每一层元素相加的总和 double sum = 0; //这里不能用while循环,否则size的值会改变 for(int i=0;i<size;i++) { TreeNode* node = que.front(); que.pop(); sum += node->val; if (node->left != nullptr) que.push(node->left); if (node->right != NULL) que.push(node->right); } //将每一层的平均值加入数组中 result.push_back(sum / size); } return result; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步