再帰関数を使用して、二分木 (いいえ、二分検索木ではなく、単なる二分木) を使用した検索方法を作成しようとしています。データが二分木上にある場合はノードを返し、そうでない場合はNULL
値を返します。検索機能を作成しましたが、その機能は完璧です。しかし問題は、関数がノードを返さないように見えることです。
struct
二分木の場合は次のとおりです。
struct data
{
int number;
struct data *left, *right;
}*root = NULL;
そして、これは私が話している検索機能です:
data* search(struct data *node, int key)
{
if(node == NULL)
return NULL;
else
{
printf("\n%d %d -", node->number, key);
if(node->number== key)
return node;
search(node->left, key);
search(node->right, key);
}
}
このように検索関数を呼び出している場合: 、数値を二分木にプッシュしたにもかかわらず、値search(root, 6);
を返していると表示されます(検索関数もその行で停止するため、関数がを返します。)NULL
6
return node;
NULL
ここでバイナリツリーのチュートリアルを見て、 そこからいくつかのコードを使用して変更しましたが、それでも同じです。私はここで必死に助けを求めています:(