文章

6

粉丝

0

获赞

0

访问

342

头像
2025 年 9 月第 1 次 408 月考试卷 - 第41题回答
数据结构
发布于2025年9月20日 17:07
阅读数 49

(1)采用先序遍历,对每一个节点,找出其左右子树中与当前根节点的差值的绝对值的最小值,并在每次递归结束时比较,并次啊用一个全局变量记录符合条件的节点的个数

(2) 

int count=0;
int countNodes(TreeNode* root){
     if(root==null||((root->right==null)&&(root->left==null))){
        return 0;
  }
      int k=countNodes(root->left)
}
int abs(int x){
   return x>0?x:-x;
}

 


评分及理由

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

学生给出了基本设计思想:采用先序遍历,对每个节点计算左右子树与当前节点的最小差值绝对值,并比较是否相等,使用全局变量计数。该思路与标准答案中的暴力解基本一致,但描述较为简略,未明确说明如何计算最小差值(例如通过遍历子树)。因此扣1分,得2分。

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

学生提供的代码不完整且存在多处错误:
1. 函数逻辑不完整:`countNodes`函数只递归了左子树,未处理右子树,且未实现核心计算逻辑(如计算最小差值并比较)。
2. 语法错误:`null`应为`NULL`;条件判断中`(root->right==null)&&(root->left==null)`多余(题目要求节点必须同时存在左右子树,但这里直接返回0会漏掉非叶节点的判断)。
3. 未实现最小差值计算:代码中完全没有涉及计算左右子树最小差值的部分。
4. 全局变量`count`未在函数中使用,且函数返回的是递归结果而非计数。
综上,代码无法实现题目要求,仅定义了部分结构,得0分。

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

学生未给出时间复杂度分析,得0分。

题目总分:2+0+0=2分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发