637. Average of Levels in Binary Tree

来源:互联网 发布:java接口对于耦合实例 编辑:程序博客网 时间:2024/05/16 09:35

直接可以暴力解出来,先统计一颗数的层序遍历,然后统计每层的均值。

/** * 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) {        if(root==NULL){            vector<double> temp;            return temp;        }        queue<TreeNode*> nodes;        queue<int> levels;        vector<vector<double>> result;        nodes.push(root);        levels.push(0);        while(!nodes.empty())        {            if(nodes.front()->left!=NULL){                nodes.push(nodes.front()->left);                levels.push(levels.front()+1);            }            if(nodes.front()->right!=NULL){                nodes.push(nodes.front()->right);                levels.push(levels.front()+1);            }            if(result.size()<=levels.front()){                vector<double> temp;                temp.push_back(nodes.front()->val);                result.push_back(temp);            }            else                result[levels.front()].push_back(nodes.front()->val);            nodes.pop();            levels.pop();        }        vector<double> finalResult(result.size(), 0);        for(int i=0;i<result.size();i++){            for(int j=0;j<result[i].size();j++)                finalResult[i] += result[i][j];            finalResult[i] /= result[i].size();        }        return finalResult;    }};