华为OD机试真题-传递悄悄话-2023年OD统一考试(C卷)

题目描述:

给定一个二叉树,每个节点上站着一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。

初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。

输入描述:

给定二叉树

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)
相关推荐
IAUTOMOBILE4 分钟前
Python 流程控制与函数定义:从调试现场到工程实践
java·前端·python
好大哥呀22 分钟前
C++ Web 编程
开发语言·前端·c++
ID_1800790547329 分钟前
小红书笔记评论 API,Python 调用示例与完整 JSON 返回参考
java·开发语言
南境十里·墨染春水2 小时前
C++ 笔记 友元(面向对象)
开发语言·c++·笔记
TT_44192 小时前
python程序实现图片截图溯源功能
开发语言·python
笨笨饿2 小时前
20_Git 仓库使用手册 - 初学者指南
c语言·开发语言·嵌入式硬件·mcu·学习
人间打气筒(Ada)2 小时前
go实战案例:如何通过 Service Meh 实现熔断和限流
java·开发语言·golang·web·istio·service mesh·熔断限流
小陈的进阶之路2 小时前
logging 日志模块笔记
python
cqbelt2 小时前
Python 并发编程实战学习笔记
笔记·python·学习
桦03 小时前
[C++复习]:STL
开发语言·c++