文章
7
粉丝
0
获赞
0
访问
3.3k
// 计算当前节点子树中与目标值的最小绝对差
int minDist(TreeNode* r, int t) {
if (!r) return INT_MAX; // 空节点返回极大值
int d = abs(r->val - t); // 当前节点与目标的绝对差
// 返回当前差和左右子树最小差中的最小值
return min({d, minDist(r->left, t), minDist(r->right, t)});
}
int countNodes(TreeNode* root) {
if (!root) return 0; // 空树返回0
int cnt = 0;
// 检查当前节点是否同时有左右子树且最小距离相等
if (root->left && root->right) {
int ld = minDist(root->left, root->val); // 左子树最小距离
int rd = minDist(root->right, root->val); // 右子树最小距离
if (ld == rd) cnt++; // 满足条件则计数
}
// 递归统计左右子树满足条件的节点数
return cnt + countNodes(root->left) + countNodes(root->right);
}
// 计算当前节点子树中与目标值的最小绝对差
int minDist(TreeNode* r, int t) {
if (!r) return INT_MAX; // 空节点返回极大值
int d = abs(r->val - t); // 当前节点与目标的绝对差
// 返回当前差和左右子树最小差中的最小值
return min({d, minDist(r->left, t), minDist(r->right, t)});
}
int countNodes(TreeNode* root) {
...
登录后发布评论
暂无评论,来抢沙发