Example 1:
Input: 3 / \ 9 20 / \ 15 7 Output: [3, 14.5, 11] Explanation: The average value of nodes on level 0 is 3, on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].Note:
The range of node's value is in the range of 32-bit signed integer. /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<double> averageOfLevels(TreeNode* root) { vector<double> res; double ave = 0; queue<TreeNode*> st; st.push(root); while (!st.empty()) { long long tmp = 0; int len = st.size(); for (int i = 0; i < len; i++) { TreeNode *qn = st.front(); st.pop(); if (qn->left) st.push(qn->left); if (qn->right) st.push(qn->right); tmp += qn->val; } res.push_back((double)tmp / len); } return res; } };
posted @ 2019-05-21 14:53 douzujun 阅读( ...) 评论( ...) 编辑 收藏