文章

302

粉丝

0

获赞

15

访问

52.2k

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


评分及理由

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

学生给出的基本设计思想是利用中序遍历将结点值存入辅助数组,然后检查数组是否严格递增来判断是否为二叉搜索树。这一思路与标准答案中的方法二一致,且正确利用了二叉搜索树的性质。因此,本部分得4分。

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

学生在代码实现中存在以下问题:

  • 1. 函数参数传递错误:在MidOrder函数中,参数num表示当前结点索引,但递归调用时未正确传递索引值。例如,左子结点索引应为2*num+1,但代码中直接使用num*2+1作为参数,未检查数组边界和-1标记,可能导致越界或错误递归。
  • 2. 空结点检查不完整:代码中通过num*2+1 != -1判断左子结点是否存在,但未检查该索引是否在数组有效范围内(ElemNum),且未判断该位置值是否为-1(表示空结点),可能导致逻辑错误。
  • 3. 全局变量使用冲突:定义了全局变量Cnt,但在Is_Sort_Tree函数中又定义了局部变量Cnt并初始化为0,导致递归计数混乱,辅助数组填充不正确。
  • 4. 辅助数组遍历范围错误:在Is_Sort_Tree中,循环条件为i < MAX_SIZE - 1,但实际有效数据个数应为Cnt(递归后计数),而非固定MAX_SIZE,可能访问无效数据或漏检。
  • 5. 语法和命名错误:如SqBiNode误写为SqBNode(第一次识别),但根据上下文可判断为识别误写,不扣分;函数名Mid Order含空格(第一次识别),第二次识别已修正,不扣分。

综上,代码核心逻辑(中序遍历+数组检查)正确,但实现存在多处逻辑错误,影响算法正确性。根据错误严重程度,扣5分。本部分得4分。

题目总分:4+4=8分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发