文章
45
粉丝
0
获赞
0
访问
4.7k
1.进行先序遍历,当左节点大于父节点或右节点小于父节点时说明不满足二叉搜索树的性质
2.
#define true 1
#define false 0
int isBinSearchTree(SqBiTree tree){
return prioTraverse(tree.SqBiTree,0,tree.ElemNum);
}
int prioTraverse(Elemtype* nodeArr, int current,int max){
if(current*2>=max){
return true;
}
int left = *nodeArr[(current+1)*2-1];//左侧链路径:0->1->3->7->15->(i+1)*2-1
int current = *nodeArr[current]
int right = *nodeArr[(1+current)*2]//同理
int resl = false;
int resr = false;
if(left != -1 && left < current){
resl = prioTraverse(nodeArr,(current+1)*2-1,max);
}
if(right != -1 && right > current){
resr=prioTraverse(nodeArr,(current+1)*2,max);
}
return resl && resr;//有一边不满足要求,则整颗树不满足要求
}
评分及理由
(1)得分及理由(满分4分)
得分:0分
理由:学生的基本设计思想存在严重错误。先序遍历无法正确判断二叉搜索树,因为二叉搜索树要求左子树所有节点都小于根节点,右子树所有节点都大于根节点,而先序遍历只能检查直接子节点与父节点的关系,无法检查整个子树的节点值范围。学生提出的"当左节点大于父节点或右节点小于父节点时说明不满足"这个判断标准是不完整的。
(2)得分及理由(满分9分)
得分:0分
...
登录后发布评论
暂无评论,来抢沙发