文章
7
粉丝
0
获赞
0
访问
108
(1)中序遍历得到有序序列,计算相邻的差值(2)
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
// 定义结果存储:由于可能存在多个差值相等的结点,使用数组记录
int resultNodes[100];
int count = 0;
int minDiff = INT_MAX;
/**
* 核心递归函数:中序遍历寻找最小差值结点
* @param T 当前处理的树结点指针
* @param K 目标整数
*/
void findMinDiffNodes(BSTNode* T, int K) {
if (T == NULL) return;
// 1. 递归进入左子树
findMinDiffNodes(T->left, K);
// 2. 核心处理逻辑:计算当前绝对差
int currentDiff = abs(T->data - K);
if (currentDiff < minDiff) {
// 情况一:发现更小的差值,重置结果集
minDiff = currentDiff;
count = 0;
resultNodes[count++] = T->data;
}
else if (currentDiff == minDiff) {
// 情况二:发现相等的最小差值,加入结果集
resultNodes[count++] = T-...
登录后发布评论
暂无评论,来抢沙发