文章
87
粉丝
0
获赞
1
访问
17.3k
(1)二叉搜索树定义是左子树结点均小于根结点,右子树结点均小于根结点,设置一函数用于递归,超出数组下标的结点视为空结点,-1结点视为不存在的结点,若搜索至此该两节点满足搜索树定义,结束遍历,在每次递归时,将根节点视作左子树的最大值,右子树的最小值,直到遍历完毕,输出判断结果。
(2)
bool judgeTree(SqBiTree T, int i,int low ,int high)
{
if(i>T.ElemNum||T.SqBitNode[i]==-1)return true;
if(T.SqBitNode[i]<low||T.SqBitNode[i]>high) return false;
bool a=judgeTree(T,2i+1,low,T.SqBitNode[i]);
bool b=judgeTree(T,2i+2,T.SqBitNode[i],high);
return a&&b;
}
运行函数;
评分及理由
(1)得分及理由(满分4分)
得分:3分
理由:学生的基本设计思想正确,提到了二叉搜索树的定义和递归方法,但描述中有一处错误("右子树结点均小于根结点"应为"右子树结点均大于根结点")。此外,描述较为简略,没有详细说明递归过程中如何维护上下界。
(2)得分及理由(满分9分)
得分:6分
理由:代码实现基本正确,但有以下问题:
1. 函数名拼写错误(SqBitNode应为SqBiTNode)
2. 乘法运算符缺失(2i+1应为2*i+1)
3. 缺少初始调用时的上下界设置(LONG_MIN和LONG_MAX)
4. 缺少运行函数的具体实现
5. 代码格式不规范(缺少必要的空格和换行)
题目总分:3+6=9分
登录后发布评论
暂无评论,来抢沙发