文章
1
粉丝
0
获赞
0
访问
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分)
学生代码实现了...
登录后发布评论
暂无评论,来抢沙发