通过率 67% · 提交 320 · 通过 214
这道 OJ 的配套动画
目录树递归 · 对应本题的思路、过程和代码
小慕正在管理一个文件系统,其中每个目录的数据格式为:,本目录中文件大小,()。目录id全局唯一,取值范围[1, 200],本目录中文件大小范围[1, 1000],子目录id列表个数[0,10]。例如:1 20 (2,3) 表示目录1中文件总大小是20,有两个子目录,id分别是2和3。现在小慕拿到了这个文件系统中所有目录的信息,以及一个,需要计算并返回该目录及其所有子目录的文件大小之和。
这类题属于华为 OD 机考真题方向中「100分 / DFS」方向的高频题型,通常考察对「100分 / DFS」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
第一行为两个数字M,N,分别表示目录的个数和待查询的目录id, 1 ≤ M ≤ 100 1 ≤ N ≤ 200 接下来M行,每行为1个目录的数据: 目录id 本目录中文件大小 (子目录id列表) 子目录列表中的子目录id以逗号分隔。
待查询目录以及其子目录之和
示例 1
输入示例
3 1 3 15 () 1 20 (2) 2 10 (3)
输出示例
45
目录1大小为20,包含一个子目录2(大小为10),子目录2包含1个子目录3(大小为15),总的大小为20+10+15=45
示例 2
输入示例
4 2 4 20 () 5 30 () 2 10 (4,5) 1 40 ()
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
训练营动画视频讲解
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
输出示例
60
目录2包含2个子目录4和5,总的大小为10 + 20 + 30 = 60
时间限制 1000 ms · 内存限制 128 MB
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有
相关图解步骤
先看指定步骤补关键知识点,再回到本题完成标准输入输出。
目录编号不连续,因此用哈希表保存每个目录的自身大小和子目录列表。定义 subtree_size(u) 返回目录 u 连同全部后代的总大小:先取 u 自身大小,再递归累加每个直接子目录的返回值。叶目录没有子目录,函数自然返回自身大小。
每个目标子树节点和父子边各访问一次,时间复杂度 O(k),其中 k 是目标子树节点数;哈希表占 O(n),递归栈最坏为树高 O(n)。输入 () 表示空子目录列表,解析时必须单独处理。