题目讲解
一个领导可以有多个下属,一个下属只有一个领导,这就是一颗抽象的树,员工的重要性就是 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; } }