LeetCode:637. 二叉树的层平均值

    技术2022-07-12  77

                      值得注意的是,我在解决这个问题的时候下意识地将求和写成了accummulate函数的调用形式,可是这个函数是不能处理溢出的情况的,所以求和函数需要自己手写。
    /** * 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<vector<int>> levelOrder(TreeNode* root) { queue<TreeNode*> level; vector<vector<int>> res; vector<int> temp; if(root==NULL) { return res; } else { level.push(root); temp.push_back(root->val); res.push_back(temp); } int size=0; //从根节点开始不断地遍历 while(!level.empty()) { //保存当前队列中的元素,//每一次经过这里战中存储的就是一行的元素 size=level.size(); int i=0; temp.clear();//清空 while(i<size) { if(level.front()->left!=NULL) { temp.push_back(level.front()->left->val); level.push(level.front()->left); } if(level.front()->right!=NULL) { temp.push_back(level.front()->right->val); level.push(level.front()->right); } level.pop(); i++; } if(temp.size()!=0) res.push_back(temp); } return res; } vector<double> averageOfLevels(TreeNode* root) { vector<vector<int>>res=levelOrder(root); vector<double>ret; for(int i=0;i<res.size();i++) { //对每一层求解平均值 double sum=0; for(int j=0;j<res[i].size();j++) { sum+=res[i][j]; } sum/=(1.0*res[i].size()); ret.push_back(sum); } return ret; } };
    Processed: 0.012, SQL: 9