私は既に作成したバイナリ検索ツリーの助けを借りていくつかのデータを並べ替えたいです。 私は、次の例のコードが動作します..しかし、これがどのように動作するのか理解できません。 データベースにレコードが存在しない場合はb = 0と戻ります。これは明らかです。 bが存在する場合は、左ノードに戻り、b-> left == NULLになるまで関数を何度も呼び出します。正しく取得できますか? しかし、とき、それはそれは、印刷をdoesntの機能を実行しますが、関数の先頭から再び開始したとき、私は何を得るのため、..バイナリ検索ツリーソート
void display_ordered_email(struct BST_node *b)
{
if (b==0)
return;
display_ordered_email(b->left);
printf("Name : %s\n", b->data->name);
printf("Address : %s\n", b->data->address);
printf("Email : %s\n", b->data->email);
printf("\n");
display_ordered_email(b->right);
}
このINORDERトラバーサルまたはその他の方法か、データを印刷しませんか
最初のNULLに達してから戻ると、最後に再帰的に呼び出された場所に戻ります。これは、コード例の5行目です。つまり、最初のprintfステートメントである6行目に続きます。それはあなたが「いつデータを印刷するのですか...」と言ったときに求めていることですか? –