文章
62
粉丝
0
获赞
0
访问
1.5k

评分及理由
(1)得分及理由(满分3分)
得分:0分
理由:学生的基本设计思想存在根本性错误。题目要求计算的是所有叶结点的带权路径长度之和,即每个叶结点的权值乘以它的深度(从根节点到该叶结点的路径长度)。而学生的思路是"将扫描到的非叶结点按孩子结点个数为1,将其weight×2加入总WPL计数",这完全不符合WPL的定义,没有考虑结点深度,也没有正确识别叶结点的处理方式。
(2)得分及理由(满分4分)
得分:2分
理由:学生的数据类型定义基本正确,包含了weight、left和right三个域。但存在以下问题:
1. 结构体名称使用了"tree",在C/C++中通常使用"BiTNode"等更明确的名称
2. 指针定义有语法错误:"struct *tree left"应为"struct tree *left"
3. 类型别名定义有重复:"tree, *tree"中第二个应该是不同的指针类型名称
由于核心结构正确但存在语法错误,给予部分分数。
(3)得分及理由(满分6分)
得分:0分
理由:算法实现存在严重逻辑错误:
1. 没有正确计算深度,完全忽略了深度参数
2. 对非叶结点的处理逻辑错误(直接加weight而不是深度×weight)
3. 递归调用时没有传递深度信息
4. 参数传递方式错误(sum按值传递,无法正确累加)
5. 缺少返回值
算法整体思路与WPL计算要求不符,无法正确计算结果。
题目总分:0+2+0=2分
登录后发布评论
暂无评论,来抢沙发