文章

115

粉丝

0

获赞

0

访问

7.9k

头像
2022年(408)计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年11月19日 20:37
阅读数 79


评分及理由

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

学生答案的基本设计思想是:使用递归方法,对每个结点判断其值是否在允许的范围内(min到max),然后递归检查左子树和右子树。这与标准答案中方法一(递归)的思想一致,都是利用二叉搜索树的性质,通过传递上下界来验证每个结点值的合法性。因此,设计思想正确且完整。得4分。

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

学生的代码实现整体思路正确,但存在一些逻辑错误和细节问题:

  • 在递归函数中,条件判断if (index >= tree.ElemNum && tree.SqBiNode[index] == -1)存在逻辑错误。这里应该使用“或”关系(||),因为只要满足其中一个条件(索引越界或结点值为-1)就应返回true,表示空结点。当前使用“与”关系(&&)会导致在索引越界但结点值不为-1时错误地进入后续判断,可能引发数组越界访问。此错误属于逻辑错误,扣2分。
  • 参数命名不一致:代码中使用了tree.SqBiNode[index],但题目定义中数组名为SqBiTNode,这可能是识别错误或笔误。根据禁止扣分规则第1条和第4条,若判断为误写则不扣分,但此处影响代码正确性,需扣1分。
  • 递归调用时,左子树的上下界传递正确(min到当前结点值),右子树的上下界传递也正确(当前结点值到max),这部分逻辑与标准答案一致,不扣分。
  • 主函数judgeBST中,初始调用将min设为-1,但题目中结点值均为正整数,且标准答案使用LONG_MIN(或INT_MIN)作为下界。使用-1作为下界可能不严谨,但考虑到结点值最小为1,且-1表示空结点,实际运行中可能不会出错,因此视为小瑕疵,扣1分。

综上,代码部分扣分总计4分,得5分。

题目总分:4+5=9分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发