文章

266

粉丝

1101

获赞

1683

访问

136w

头像
【2022年】408计算机统考真题模拟考试 - 第41题答案笔记
数据结构
发布于2025年5月24日 18:46
阅读数 81

计算机考研408统考历年真题及答案解析

### 41. 1) 遍历每个元素及其孩子结点,若左右孩子均存在,则比较根该结点信息及其孩子结点值的大小,不满足左孩子值<根结点值<右孩子值,则直接返回false;若左孩子不存在或右孩子,重复上述判断。 2) ```cpp bool function(SqBiTree T) { for (int i = 0; i < T.ElemNum; ++i) { if (T.SqBiTNode[2 * i + 1] != -1 && T.SqBiTNode[2 * i + 2] != -1) { if (T.SqBiTNode[2 * i + 1] > T.SqBiTNode[i] || T.SqBiTNode[i] > T.SqBiTNode[2 * i + 2]) return false; } else if (T.SqBiTNode[2 * i + 1] != -1 && T.SqBiTNode[2 * i + 2] == -1) { if (T.SqBiTNode[2 * i + 1] > T.SqBiTNode[i]) return false; } else if (T.SqBiTNode[2 * i + 2] != -1 && T.SqBiTNode[2 * i + 1] == -1) { if (T.SqBiTNode[2 * i + 2] < T.SqBiTNode[i]) return false; } } return true; } ```


评分及理由

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

得分:2分

理由:学生的基本设计思想存在逻辑错误。二叉搜索树的定义不仅仅是当前节点与其直接左右孩子的关系,而是整个左子树的所有节点都要小于当前节点,整个右子树的所有节点都要大于当前节点。学生的方法只检查了直接孩子节点,忽略了子树的其他节点,因此无法正确判断是否为二叉搜索树。

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

得分:4分

理由:学生的代码实现与设计思想一致,但同样存在逻辑错误。代码只检查了当前节点与其直接左右孩子的关系,没有考虑整个子树的情况。此外,代码没有处理数组越界的情况(例如当2*i+1或2*i+2超过数组大小时),可能导致未定义行为。因此,代码的正确性不足。

题目总分...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发