题目描述:
给定一个二叉树,每个节点上站着一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。
初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。
输入描述:
给定二叉树
0 9 20 -1 -1 15 7 -1 -1 -1 -1 3 2
注:-1表示空节点
输出描述:
返回所有节点都接收到悄悄话花费的时间38
补充说明:
示例1
输入:
0 9 20 -1 -1 15 7 -1 -1 -1 -1 3 2
输出:
38
说明:
python
from collections import deque
queue = deque()
result = 0
def check(index, nums, father):
global result
if index < len(nums) and nums[index] != -1:
nums[index] += nums[father]
queue.append(index)
if nums[index] > result:
result = nums[index]
if __name__ == "__main__":
input_str = input()
tmp2 = input_str.split(" ")
nums = [int(num) for num in tmp2]
queue.append(0)
while queue:
father = queue.popleft()
check(2 * father + 1, nums, father)
check(2 * father + 2, nums, father)
print(result)