文章

164

粉丝

0

获赞

1

访问

91.3k

头像
2022年(408)计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年11月24日 21:28
阅读数 247

(1)二叉搜索树要求左子树的所有值不大于遍历节点,右子树的所有值不小于遍历节点,采用中序遍历思想遍历该树,利用weight记录当前节点的值,访问左子树时,该值为max,访问右子树时,该值为min,在遍历时将左右子树中所有值于weight相比,仅当全部遍历完毕后,才返回true,若有一个不满足,返回false,分析可知若遍历节点为i,左子树节点为2i+1,右子树为2i+2

(2)初始化树,设其指针为T;

int i=0;

bool flag=1;

int min=max=T.SqBiTNode[0];

bool iftree(SqBitree* T,int i,int min,int max)

{

if(flag=0) return false;//说明此时已经出现了不满足的节点,返回false

if(T.SqBiTNode[i]==-1&&i<T.ElemNum) 

{

int weight=T.SqBiTNode[i];

if(weight<max&&weight>T.SqBiTNode[2i+1]) flag=iftree(T,2i+1,min,weight);

else flag=0;

if(weight>min&&weight<T.SqBiTNode[2i+2])flag=(T,2i+2,weight,max);

else flag=0

}

return true;//全部遍历完毕,验证成功

}

 

 

}

}


评分及理由

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

得分:2分

理由:学生基本理解了二叉搜索树的性质(左子树值不大于当前节点,右子树值不小于当前节点),并提出了中序遍历的思想。但是设计思想描述不够清晰准确:

  • 混淆了中序遍历和递归验证的边界条件方法
  • 描述中提到的"weight"变量使用方式不明确
  • 没有明确说明如何传递上下界约束条件
  • 基本思路方向正确,但细节描述混乱

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

得分:3分

理由:代码实现存在多处严重逻辑错误:

  • 语法错误:2i+1应写为2*i+1
  • 逻辑错误:在...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发