通过率 72% · 提交 390 · 通过 282
这道 OJ 的配套动画
树上路径计算 · 对应本题的思路、过程和代码
小慕正在管理一个公司的消息传递系统,系统结构是一棵,每个节点代表一名员工,节点上的数字表示从父节点向该员工传递消息所需要的时间。 初始时,只有上的小慕掌握了一条重要消息,他需要将这条消息传递给所有其他员工。请问,从开始传递起,到所有员工都收到这条消息,最少需要多少时间?
这类题属于华为 OD 机考真题方向中「200分 / DFS」方向的高频题型,通常考察对「200分 / DFS」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
给定一个数组表示二叉树,-1 表示空节点
返回所有节点都接收到悄悄话花费的时间
示例 1
输入示例
0 9 20 -1 -1 15 7 -1 -1 -1 -1 3 2
输出示例
38
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
训练营动画视频讲解
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有
输入使用堆式下标表示二叉树:下标 i 的左右孩子分别位于 2i+1 和 2i+2,-1 表示空节点。定义递归函数返回“当前节点到某个叶节点的最大路径和”。空节点返回无结果;叶节点返回自身值;只有一个有效孩子时必须选择该孩子,两个孩子都有效时选择返回值较大者,再加当前节点值。
递归按定义比较当前节点到所有有效叶子的路径,不会把空孩子当成数值 0,因此即使节点值允许为负也能选到真实叶子。每个有效下标至多访问一次,时间 O(n);堆式下标每深入一层至少翻倍,递归深度 O(log n),输入数组占 O(n)。题目保证根节点存在。