高级农民
- 积分
- 4363
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-2-24
- 最后登录
- 1970-1-1
|
- class Node {
- public:
- int val;
- vector<Node*> children;
- Node(int a){
- val = a;
- }
- };
- class Solution{
- public:
- Node* getHighAve(Node* root){
- if (!root) return NULL;
- double average = -9999999999999.9;
- Node* result = NULL;
- map<Node*, pair<int, int>> myMap;
- dfs(root, result, average, myMap);
- return result;
- }
- private:
- void dfs(Node* &root, Node* &result, double & average, map<Node*, pair<int, int>> & myMap){
- myMap[root] = make_pair(1, root -> val);
- if (!root -> children.empty()){
- for (auto i : root -> children){
- dfs(i, result, average, myMap);
- myMap[root].first += myMap[i].first;
- myMap[root].second += myMap[i].second;
- }
- }
- double curAverage = double(myMap[root].second) / double(myMap[root].first);
- if (curAverage > average){
- average = curAverage;
- result = root;
- }
- return;
- }
- };
复制代码 |
|