Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.
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].
(1)思想1:使用queue ,对二叉树进行层遍历。
C++:
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 vector<double> averageOfLevels(TreeNode* root) { 13 vector<double> res; 14 queue<TreeNode*> q{{root}}; 15 while(!q.empty()) 16 { 17 int n=q.size(); 18 double sum=0; 19 for(int i=0;i<n;i++) 20 { 21 TreeNode *t=q.front(); 22 q.pop(); 23 sum=sum+t->val; 24 if(t->left) 25 q.push(t->left); 26 if(t->right) 27 q.push(t->right); 28 } 29 res.push_back(sum/n); 30 } 31 return res; 32 33 } 34 };