私はCのBSTへの挿入をコーディングしています。ツリーをたどると、最初のスニペットは無効に見えます。私はなぜそれが動作しないのか理解できません。 これは動作しません:BSTに挿入するコードが機能しないのはなぜですか?
はvoid insert(Node* temp, int data)
{
if(temp==NULL)
temp=Newnode(data);
else if(data<temp->data)
insert(temp->left,data);
else if(data>temp->data)
insert(temp->right,data);
}
これは動作します:
Node* insert(Node* temp, int data)
{
if(data<temp->data)
if(temp->left!=NULL) insert(temp->left,data);
else temp->left= Newnode(data);
else if(data>temp->data)
if(temp->right!=NULL) insert(temp->right,data);
else temp->right= Newnode(data);
}
注:私はの#defineノード構造体のノードを使用していました。 Newnode()は新しいノードを割り当て、完全に動作します。