diff options
Diffstat (limited to 'avg_levels_bst.cpp')
-rw-r--r-- | avg_levels_bst.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/avg_levels_bst.cpp b/avg_levels_bst.cpp new file mode 100644 index 0000000..a18d38d --- /dev/null +++ b/avg_levels_bst.cpp @@ -0,0 +1,24 @@ +#include "leetcode.h" + +class Solution { +public: + vector<double> averageOfLevels(TreeNode *root) { + vector<double> ans; + queue<TreeNode *> q; + q.push(root); + while (!q.empty()) { + double tmp = q.size(), sum = 0; + for (int i = 0; i < tmp; i++) { + auto tt = q.front(); + q.pop(); + sum += (tt->val); + if (tt->left) + q.push(tt->left); + if (tt->right) + q.push(tt->right); + } + ans.push_back(sum / tmp); + } + return ans; + } +}; |