Здравствуйте, я столкнулся с проблемами, которые я, похоже, не могу решить. У меня есть BST, который я просматриваю и проверяю ряды. У меня есть метод checkRank(link head, targRank)
, который берет в головной узел и проходит через дерево, пока не найдет узел с равным ранга для targRank. Я пытаюсь сделать так, чтобы функция checkRank вернула текущий узел, на котором он нашел равный ранг. Какой был бы лучший способ достичь этого, потому что все мои попытки, похоже, возвращают текущий узел в голову?return current node from BST
typedef struct node* link;
struct node
{
Item item; // Data for this node
link l, r; // left & right links
int rank;
};
Func вызов:
link head;
checkRank(head, 13);
Func:
link checkRank(link h,int targetRank)
{
if (h != NULL)
{
if (h->rank < targRank)
{
checkRank(h->r, targRank);
}
if (h->rank > tarRank)
{
checkRank(h->l, targtRank);
}
if (h->rank == targRank)
{
return ??;
}
}
else
{
printf("Equiv rank could not be found\n");
}
}
Да, что сработало. Большое спасибо. – bardockyo