Напишите функцию рекурсивного диапазона , в которой задано двоичное дерево поиска, два целых числа k1 и k2, для которых k1 ≤ k2, и вектор v вставляет в v все ключи в порядке возрастания, организованные вдерево такое, что k1 ≤ k ≤ k2. Функция возвращает размер вектора v.
Это мое решение:
typedef struct node {
int key;
struct node * left;
struct node * right;
struct node * parent;
} * Node;
void rangeRic(Node u, int k1, int k2, int v[], int * pindex) {
if (u == NULL) {
return;
}
rangeRic(u->left,k1,k2,v,pindex);
if (u->key >= k1 && u->key <= k2) {
v[*pindex] = u->key;
*pindex += 1;
}
rangeRic(u->right,k1,k2,v,pindex);
}
int range(Node u, int k1, int k2, int v[]) {
int i = 0;
rangeRic(u,k1,k2,v,&i);
return i;
}
Моя проблема в том, что в описании упражнения также указано следующее:
Вы не можете использовать какую-либо вспомогательную функцию, и вектор v имеет достаточно места для размещения всех элементов, удовлетворяющих условию.
, и это последнее утверждение делает недействительным мое решение.
Как скомпилировать: gcc -std=gnu89 -pedantic -Wall -o main main.c binarySearchTree.c
Не могли бы вы, ребята, помочь мне с этим?