文章
6
粉丝
0
获赞
0
访问
342
(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分
登录后发布评论
暂无评论,来抢沙发