文章

363

粉丝

0

获赞

4

访问

67.9k

头像
2026年(408)计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2026年5月12日 04:35
阅读数 89

 

  • 跟踪最小值:设置一个变量 minDiff 记录最小差值,一个数组 res 存放结果。

  • 查找并对比:从根节点开始,向下寻找关键字 $K$:

    • 计算当前节点与 $K$ 的差值。

    • 如果发现更小的差值,清空数组并更新 minDiff

    • 如果差值相等,直接加入数组。

  • 择路而行:

    • 如果 $K$ 比当前节点小,往左走;

    • 如果 $K$ 比当前节点大,往右走;

    • 如果相等,说明差值为 0,直接结束。

  • 最终输出:数组里存的就是所有最接近的关键字

#include <vector>
#include <iostream>
#include <cmath>
#include <climits>

using namespace std;

void findClosest(BSTNode* root, int K) {
    if (!root) return;

    int minDiff = INT_MAX;
    vector<int> res;
    BSTNode* p = root;

    while (p) {
        int curDiff = abs(p->data - K);

        if (curDiff < minDiff) {
            minDiff = curDiff;
            res = {p->data}; // C++11: 直接重置并初始化
        } else if (cur...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发