LeetCode637.二叉樹的層平均值

Tomorrowland_D發表於2024-07-24

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;
	}
};

相關文章