文章

317

粉丝

1

获赞

220

访问

82.8k

头像
2014年(408)计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2026年1月10日 11:20
阅读数 63


评分及理由

(1)得分及理由(满分3分)

得分:2分。理由:学生给出了基于先序遍历递归求解WPL的基本思想,通过递归函数传递深度参数,并在遇到叶子结点时累加权值与深度的乘积。思路与标准答案一致,是正确的。但学生的描述不够完整,没有明确说明递归的终止条件(如空结点返回)以及如何初始化或累计WPL(例如使用全局变量或静态变量),因此扣1分。

(2)得分及理由(满分4分)

得分:0分。理由:题目要求给出二叉树结点的数据类型定义,但学生的作答中完全没有涉及。两次识别的代码中均未出现结点类型定义,只使用了未定义的`LNode`。因此本部分不得分。

(3)得分及理由(满分6分)

得分:3分。理由:学生代码整体框架体现了先序遍历递归计算WPL的思想,递归结构基本正确,并在叶子结点处进行累加。但存在以下逻辑错误和问题:
1. 代码中使用了未定义的类型`LNode`,应定义为包含`weight`、`left`、`right`的二叉树结点结构。
2. 递归函数`Cwpl`的返回类型为`int`,但函数体内没有返回语句(除了`if(L==NULL) return 0;`),递归调用没有利用返回值,而是依赖全局变量`wpl`。虽然全局变量方法可行,但函数设计不完整,且`main`函数中直接返回`wpl`,但`wpl`是全局变量,此设计不规范。
3. `main`函数的参数`LNode *L`不符合C/C++标准,且`main`函数通常不应作为算法描述的一部分。
鉴于代码核心递归逻辑正确,但存在明显的类型定义缺失和函数设计不规范问题,扣3分。

题目总分:2+0+3=5分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发