私の解決策は、問題へのプロンプトがあなたを挿入後、ツリーのルートを返すことになっていると言う私のバイナリツリー挿入ロジックの欠陥はどこにありますか?
/*
Node is defined as
typedef struct node
{
int data;
node * left;
node * right;
}node;
*/
node * insert (node * root, int value)
{
bool inTreeAlready = false;
node * cur = root;
while(cur != NULL)
{
if(cur->data < value)
cur = cur->right;
else if(cur->data > value)
cur = cur->left;
else
{
inTreeAlready = true;
break;
}
}
if(!inTreeAlready)
{
cur = new node;
cur->data = value;
cur->left = NULL;
cur->right = NULL;
}
return root;
}
のようなものです。
出力は非常にわかりやすいではありません
Wrong Answer! Some possible errors: 1. You returned a NULL value from the function. 2. There is a problem with your logic 3. You are printing some value from the function
あるので、これは明らかに間違っています。
私のロジックを二重にチェックして、取引が何であるか分かりません。
新しいノードを作成していますが、実際にはノードにリンクされていません。それは 'ルート'から到達することができません - それは単に漏れている。空のツリー( 'root == NULL')で始めると、空のツリーでも終わります(' 'root''はまだ' 'NULL''です).-最初のノードも決して取得しません。 –
それは奇妙ですこのコードは 'printf'呼び出しを持っていないので何かを出力します。 – immibis