こんにちは、解決できない問題に遭遇しました。私はトラバースしてランクをチェックしている BST を持っています。checkRank(link head, targRank)
ヘッド ノードを取り込み、targRank と同じランクのノードが見つかるまでツリーをトラバースするメソッドがあります。私がやろうとしているのは、checkRank 関数が等しいランクを見つけた現在のノードを返すようにすることです。私の試みはすべて現在のノードをヘッドとして返すように見えるので、これを達成するための最良の方法は何でしょうか?
typedef struct node* link;
struct node
{
Item item; // Data for this node
link l, r; // left & right links
int rank;
};
関数呼び出し:
link head;
checkRank(head, 13);
機能:
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");
}
}