文章
317
粉丝
1
获赞
220
访问
82.8k

评分及理由
(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分
登录后发布评论
暂无评论,来抢沙发