题目讲解
一个领导可以有多个下属,一个下属只有一个领导,这就是一颗抽象的树,员工的重要性就是 root.val 。现在,问题就转换成,找到一棵树的某个结点,返回以此结点为头结点的树上所有结点的 root.val 之和。
先遍历找到这个领导,将这个领导作为这颗数的头结点(root),再使用递归将领导和直系下属的重要度全部累加。
详细代码
public class Solution {
public int getImportance(List<Employee> employees, int id) {
Employee root = null;
for (Employee e : employees) {
if (e.id == id) {
root = e;
break;
}
}
int ans = root.importance;
for (int sub : root.subordinates) {
ans += getImportance(employees, sub);
}
return ans;
}
}