哈希表+树单节点(leetcode.690)
哈希表+树单节点(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);}
};