派对的最大快乐值
題目:
員工信息定義如下:
class Employee{public int happy; //這名員工帶來的快樂值List<Employee> subordinates; //這名員工有哪些直屬下級}公司的每個員工都符合Employee類的描述。整個公司人員結構可以看作是一顆標準的,沒有環的多叉樹。樹的頭節點是公司的唯一的老板,除老板外,每個員工都有唯一的直接上級。葉節點是沒有任何下屬的基層員工,除基層員工外,每個員工都有一個或多個直接下級
這個公司現在要辦party,你可以決定那些員工來,哪些員工不來,但是要遵循如下規則:
1、如果某個員工來了,那么這個員工的所有直接下級都不能來
2、派對的整體快樂值是所有到場員工快樂值的累加
3、你的目標是讓派對的整體快樂值最大
給定一個頭節點boss,請返回派對的最大快樂值
要求:如果以boss為頭節點的整棵樹有N個節點,請做到時間復雜度為O(N)
def process(head):yeshead = head.happynohead = 0 if len(head.subordinates) == 0:return [yeshead,nohead]else:for item in head.subordinates:yeshead += process(item)[1]nohead += max(process(item)[0],process(item)[1])return [yeshead,nohead]def getMaxhappy(head):return max(process(head)[0],process(head)[1])?
總結
- 上一篇: 二叉树节点间的最大距离
- 下一篇: 判断二叉树是否是平衡二叉树(dp tre