本题考查二叉树上的后序遍历 / 树形 DP:每个节点的最终绩效分等于自身基础分加上左右孩子的最终绩效分,也就是该节点子树内所有基础分之和。
输入给的是左右孩子数组,而不是常见的链式结点。需要先还原树结构,再自底向上汇总。
实现时注意:
某公司使用二叉树结构管理组织汇报关系:每个节点代表一名员工,员工的“左下属”为研发组成员,“右下属”为产品组成员。若某侧无下属,则对应位置为空。
年终绩效考核时,每位员工有一个基础绩效分。按照公司制度,管理者的最终绩效分 = 自身基础分 + 左子树所有员工的最终绩效分之和 + 右子树所有员工的最终绩效分之和。
请根据给定公司完整的员工树结构以及每位员工的基础绩效分,计算并返回每位员工的最终绩效分。
共有 4 个输入参数:
约束:
长度为 n 的数组,第 i 个元素表示员工 i 的最终绩效分。顺序与员工编号顺序一致。
输入
1,[-1],[-1],[10]
输出
[10]
说明
公司只有一名员工 0,无下属,最终绩效分等于其基础绩效分 10。
输入
5,[1,3,-1,-1,-1],[2,-1,4,-1,-1],[5,3,2,4,7]
输出
[21,7,9,4,7]
说明
树结构如下(括号内为基础绩效分):
0(5)
/ \
1(3) 2(2)
/ \
3(4) 4(7)
计算过程(后序遍历):
按编号顺序返回最终绩效分:[21,7,9,4,7]。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.