From e4d8fc800f1e845b33341d0dcda7aef7773e5603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EC=9A=B0=EC=84=9D=5BNaver=20Game=20Server=20Dev?= =?UTF-8?q?=5D?= Date: Tue, 16 Apr 2024 01:33:43 +0900 Subject: [PATCH] week50 --- .../average-of-levels-in-binary-tree.cc" | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 "\354\232\260\354\204\235/leetcode/average-of-levels-in-binary-tree.cc" diff --git "a/\354\232\260\354\204\235/leetcode/average-of-levels-in-binary-tree.cc" "b/\354\232\260\354\204\235/leetcode/average-of-levels-in-binary-tree.cc" new file mode 100644 index 0000000..5183281 --- /dev/null +++ "b/\354\232\260\354\204\235/leetcode/average-of-levels-in-binary-tree.cc" @@ -0,0 +1,36 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + vector averageOfLevels(TreeNode* root) { + vector result; + vector count; + average(root, 0, result, count); + for (int i = 0; i < result.size(); i++) { + result[i] /= count[i]; + } + return result; + } + + void average(TreeNode* node, int level, vector &sum, vector &count) { + if (node == nullptr) return; + if (level < sum.size()) { + sum[level] += node->val; + count[level] += 1; + } else { + sum.push_back(node->val); + count.push_back(1); + } + average(node->left, level + 1, sum, count); + average(node->right, level + 1, sum, count); + } +}; \ No newline at end of file