1. 程式人生 > 其它 >637. 二叉樹的層平均值

637. 二叉樹的層平均值

637. 二叉樹的層平均值

題目連結:637. 二叉樹的層平均值(簡單)

題目描述

給定一個非空二叉樹, 返回一個由每層節點平均值組成的陣列。

示例 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)

  • 空間複雜度:O(N)