文章

7

粉丝

0

获赞

0

访问

3.2k

头像
2025 年 9 月第 1 次 408 月考试卷 - 第41题回答
数据结构
发布于2025年9月20日 17:00
阅读数 591


评分及理由

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

得分:2分

理由:学生答案中描述“采用递归后序递归遍历,找到左子树中的最大值以及右子树中的最小值,与根结点作差判断绝对值是否相等”,这符合标准答案中的次优解思路(利用二叉搜索树性质,通过左子树最大值和右子树最小值计算最小距离)。但未明确说明需要先判断结点是否同时存在左右子树(这是条件①),且后序遍历的描述与代码实现不完全匹配(代码中实际是先序遍历),因此扣1分。

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

得分:5分

理由:

  • 代码实现了次优解的核心思想:通过MaxL函数获取左子树最大值(最右结点),MinR函数获取右子树最小值(最左结点),并计算差值比较。
  • 但存在多处逻辑错误:
    • MaxL函数中,当左子树为空时不应返回root->val(应返回无效值,但题目中结点值为正,可能混淆),且条件判断冗余(root->left == NULL 已检查,但后续又检查root->left->right)。
    • MinR函数中,指针p错误地从root->left开始(应为root->right),导致逻辑错误(扣2分)。
    • countNodes函数中,递归调用未正确累积结果(sum是全局变量但未更新,且返回语句错误:应累积计数而非直接返回sum+1),同时缺少对左右子树存在性的判断(条件①未完整处理:代码中只检查了叶结点情况,但未显式检查左右子树是否存在)。
    • 递归终止条件冗余(两次检查root==NULL)且叶结点返回1错误(叶结点不满足条件,应返回0)。
  • 由于核心思路正确但实现存在较多错误,扣4分。

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

得分:0分

理由:学生答案中写的是“O(log₂n)”,但实际算法时间复杂度应为O(nh)(h为树高),因为对每个结点(O(n))需要遍历左子树最右路径和右子树最左路径(O(h))。学生给出的复杂度错误,且未说明理由,因此不得分。

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

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发