哈希表+树单节点(leetcode.690)
思路:
其实就是遍历树找到,以某个节点为根节点的子树,然后便利这颗子树,树中元素存储的都是一个结构体,包含id、价值、和子树节点,因为子树中的子树节点给出,所以使用哈希表存储给定数组中的根节点即可,然后根据子树节点找到对应的子树,构建的过程中在每个子树中取出其价值累加就可以
code:
/*
// Definition for Employee.
class Employee {
public:
int id;
int importance;
vector<int> subordinates;
};
*/
class Solution {
public:
int getImportance(vector<Employee*> employees, int id) {
unordered_map<int, Employee*> _map;
auto dfs = \
[&](auto&& dfs, int emp_id) -> int
{
Employee* e = _map[emp_id];
int totel = e->importance;
for(int subId : e->subordinates)
{
totel += dfs(dfs, subId);
}
return totel;
};
for(auto employee : employees)
{
_map[employee->id] = employee;
}
return dfs(dfs, id);
}
};