文章

4

粉丝

0

获赞

0

访问

1.9k

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


评分及理由

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

学生答案的基本设计思想是通过先序遍历二叉树,对于每个同时存在左右子树的节点,分别计算其左子树和右子树中节点与当前节点值的最小差值(距离),然后比较这两个最小差值是否相等,若相等则计数。该思路与标准答案中的暴力解法一致,但未明确说明遍历方式(实际代码采用先序遍历)。设计思想描述不够完整(未明确提及遍历方式),但核心逻辑正确。扣1分,得2分。

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

学生代码实现了暴力解法:

  • 定义getMin函数递归计算子树中节点与给定值k的最小差值(距离),该函数正确遍历子树所有节点并更新最小差值,逻辑正确。
  • countNodes函数递归遍历二叉树(先序遍历),对每个节点判断左右子树是否存在,若存在则调用getMin计算左、右子树的最小差值并比较是否相等,若相等则计数。
  • 代码中存在一处逻辑错误:在第二次识别结果中,cnt += l == r? 1 : 0;正确计数,但第一次识别结果中误写为cnt += l < r? l : r;(可能是识别错误)。根据上下文和第二次识别结果,应以正确版本为准,因此不扣分。
  • 代码未处理空树情况(rootNULL时直接访问root->left会导致错误),但题目未明确要求边界处理,且核心逻辑正确,因此不扣分。
  • 整体实现与标准答案暴力解法一致,但未使用全局变量(而是通过返回值累加计数),此方式正确且更安全。代码关键部分有注释(第二次识别结果),但第一次识别结果无注释。根据评分规则,以正确版本为准,给予满分9分。

得9分。

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

学生正确指出算法的时间复杂度为\(O(n^2)\)(暴力解法中,每个节点处理需要遍历其子树所有节点),与标准答案一致。得2分。

题目总分:2+9+2=13分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发