文章
34
粉丝
78
获赞
0
访问
1.1k

评分及理由
(1)得分及理由(满分3分)
得分:3分。
理由:学生的基本设计思想描述清晰,与标准答案中基于先序遍历的思路一致。说明了使用先序遍历,传递深度参数,遇到叶子结点时累加权值与深度的乘积。思路正确,无逻辑错误。
(2)得分及理由(满分4分)
得分:4分。
理由:学生的二叉树结点数据类型定义正确,包含了权重(weight)和左右孩子指针(left, right),与标准答案中的定义等价。虽然结构体名称为BiNode,但这是允许的,不影响逻辑。
(3)得分及理由(满分6分)
得分:5分。
理由:算法描述整体正确,使用了先序遍历递归计算WPL,并正确传递深度参数。但存在以下小问题:
1. 在第一次识别的代码片段中,函数声明为`int Preorder ( BiTree *root, int depth )`,参数类型`BiTree *root`应为`BiTree root`(因为BiTree已定义为指针类型),这可能导致编译错误或逻辑误解。但在第二次识别中已修正为`BiTree root`。
2. 在第一次识别的代码中,递归函数返回`WPL`,但函数本身是递归调用,每次返回WPL可能造成混淆,且未处理root为NULL时直接return的情况(但WPL是全局变量,所以不影响最终结果)。标准答案中使用static变量或返回值传递的方式更严谨。
3. 学生使用了全局变量`wpl`来记录结果,这虽然可行,但不如标准答案中通过函数返回值或static变量封装得优雅,且全局变量在多线程或多次调用时可能有问题。但根据题目要求,算法正确即可,此设计选择不扣分。
综合来看,算法核心逻辑正确,能正确计算WPL,但参数类型的小瑕疵和全局变量的使用稍欠严谨,扣1分。
题目总分:3+4+5=12分
登录后发布评论
暂无评论,来抢沙发