文章
363
粉丝
0
获赞
4
访问
67.9k
跟踪最小值:设置一个变量 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...
登录后发布评论
暂无评论,来抢沙发