文章
302
粉丝
0
获赞
15
访问
52.2k

评分及理由
(1)得分及理由(满分4分)
学生给出的基本设计思想是利用中序遍历将结点值存入辅助数组,然后检查数组是否严格递增来判断是否为二叉搜索树。这一思路与标准答案中的方法二一致,且正确利用了二叉搜索树的性质。因此,本部分得4分。
(2)得分及理由(满分9分)
学生在代码实现中存在以下问题:
MidOrder函数中,参数num表示当前结点索引,但递归调用时未正确传递索引值。例如,左子结点索引应为2*num+1,但代码中直接使用num*2+1作为参数,未检查数组边界和-1标记,可能导致越界或错误递归。num*2+1 != -1判断左子结点是否存在,但未检查该索引是否在数组有效范围内(ElemNum),且未判断该位置值是否为-1(表示空结点),可能导致逻辑错误。Cnt,但在Is_Sort_Tree函数中又定义了局部变量Cnt并初始化为0,导致递归计数混乱,辅助数组填充不正确。Is_Sort_Tree中,循环条件为i < MAX_SIZE - 1,但实际有效数据个数应为Cnt(递归后计数),而非固定MAX_SIZE,可能访问无效数据或漏检。SqBiNode误写为SqBNode(第一次识别),但根据上下文可判断为识别误写,不扣分;函数名Mid Order含空格(第一次识别),第二次识别已修正,不扣分。综上,代码核心逻辑(中序遍历+数组检查)正确,但实现存在多处逻辑错误,影响算法正确性。根据错误严重程度,扣5分。本部分得4分。
题目总分:4+4=8分
登录后发布评论
暂无评论,来抢沙发