637. 二叉樹的層平均值
阿新 • • 發佈:2021-11-27
題目連結:
題目描述
給定一個非空二叉樹, 返回一個由每層節點平均值組成的陣列。
示例 1:
輸入:
3
/ \
9 20
/ \
15 7
輸出:[3, 14.5, 11]
解釋:
第 0 層的平均值是 3 , 第1層是 14.5 , 第2層是 11 。因此返回 [3, 14.5, 11] 。
提示:
-
節點值的範圍在32位有符號整數範圍內。
題解
思路:對數進行層次遍歷,再求每一層節點的和,除以每一層節點個數即為平均值。
程式碼(C++):
struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int value) : val(value), left(nullptr), right(nullptr) {} }; class Solution { public: vector<double> averageOfLevels(TreeNode* root) { queue<TreeNode*> que; vector<double> result; if (root != nullptr) que.push(root);while (!que.empty()) { int size = que.size(); double sum = 0; for (int i = 0; i < size; i++) { TreeNode* node = que.front(); que.pop(); sum += node->val; if (size - 1 == i) result.push_back(sum/size);if (node->left) que.push(node->left); if (node->right) que.push(node->right); } } return result; } };
分析:
-
時間複雜度:O(N)
-
-