文章
87
粉丝
0
获赞
1
访问
17.3k
(1)二叉搜索树定义是左子树结点均小于根结点,右子树结点均小于根结点,设置一函数用于递归,超出数组下标的结点视为空结点,-1结点视为不存在的结点,若搜索至此该两节点满足搜索树定义,结束遍历,在每次递归时,将根节点视作左子树的最大范围high,右子树的最小范围low,直到遍历完毕,输出判断结果。
(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,2*i+1,low,T.SqBitNode[i]);
bool b=judgeTree(T,2*i+2,T.SqBitNode[i],high);
return a&&b;
}
评分及理由
(1)得分及理由(满分4分)
得分:3分
理由:学生基本理解了二叉搜索树的定义和递归判断的思路,但描述中有一个错误:右子树结点应大于等于根结点,而非"均小于根结点"。此外,思路描述较为模糊,未明确说明如何初始化low和high的值。
(2)得分及理由(满分9分)
得分:7分
理由:代码整体结构与标准答案一致,实现了递归判断功能。但存在以下问题:
1. 变量名拼写错误:SqBitNode应为SqBiTNode(扣1分)
2. 缺少主函数和初始化low/high的调用部分(扣1分)
3. 未处理边界值LONG_MIN/LONG_MAX的情况(不扣分,因题目说明结点均为正整数)
题目总分:3+7=10分
登录后发布评论
暂无评论,来抢沙发