文章

1

粉丝

0

获赞

0

访问

453

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

void DFS(TreeNode* node,int &cnt){

    if(node->left==NULL && node->right==NULL)return;

    DFS(node->left,cnt);

    DFS(node->right,cnt);

    if(node->left && node->right){

        int leftdiff=abs(node->val-node->left->val);

        int rightdiff=abs(node->val-node->right->val);

        if(rightdiff==leftdiff){

            cnt++;

        }

    }

    return;

}

int countNodes(TreeNode* root){

    int cnt=0;

    DFS(root,cnt);

    return cnt;

}


评分及理由

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

学生答案的基本设计思想是:通过DFS遍历二叉树,对于每个同时存在左右子树的结点,计算当前结点与左子结点和右子结点的绝对差,若这两个差值相等则计数。但题目要求的是左子树中所有结点与当前结点的最小距离(即最小绝对差)和右子树中所有结点与当前结点的最小距离相等,而学生答案仅比较了直接子结点的差值,未考虑子树中其他结点可能产生更小的距离。因此,设计思想存在严重缺陷,未能正确理解题目要求。得0分。

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

学生代码实现了...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发