文章

7

粉丝

0

获赞

0

访问

64

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

1)二叉搜索树的特点:中序遍历的结果是升序的,因此判断的方式是先对非空二叉树进行中序遍历,遍历的过程中用一个中间变量保存上一个结点的值,然后遍历到当前节点是和上一个结点比较,若更小则退出遍历说明不符合,更大则将当前结点的值赋给中间变量,然后继续往下遍历直到遍历完成都没有不符合的情况,说明是二叉搜索树

bool isSearch(SqBiTree * T){
      // 中序遍历
      bool result = MidRoot(T,0,0);  
}

void MidRoot(SqBiTree *T,int i,int preValue){
    if(T.SqBiTNode[i]!=-1&&i<T.ElemNum){
       MidRoot(T,2i+1,preValue,result);
       // 记录当前的值,和上一个的值进行比较
       int curValue = T.SqBiTNode[i];
       if( curValue < preValue){
           return false;
       }else{
           preValue = curValue;
       }
       MidRoot(T,2i+2,preValue,result);
    }
    return true;
}
         

 


评分及理由

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

得分:4分

理由:学生准确描述了二叉搜索树的中序遍历性质,并提出了使用中序遍历过程中比较前驱节点值的方法来判断是否为二叉搜索树。基本设计思想正确,与标准答案中的方法二思路一致。

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

得分:5分

理由:

  • 代码框架基本正确,采用了递归中序遍历的思路。
  • 存在多处逻辑错误:
    • 函数声明与调用不一致:MidRoot函数在声明时有3个参数,但调用时传递了4个参数。
    • 参数传递错误:preValue按值传递,导致递归过程中无法正确更新前驱节点的值。
    • 递归终止条件不完整:当节点为-1时应该返回,但代码中只判断了非-1的情况。
    • 语法...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发