BSTのCプログラムを作成する必要がありますが、ルートノードには左の子または右の子を作成できません。ルートノードの作成はOKです。ルートノードの要素を検索することもできます。しかし、ツリー内の複数の要素 、私はこの問題を解決するのに役立つ親切に私はCプログラミング:Cを使用してバイナリ検索ツリーを作成する際にエラーが発生しました
#include<stdio.h>
#include<stdlib.h>
typedef struct tree
{
struct tree *left;
int data;
struct tree *right;
}node;
node *ROOT;
//////////////////////////
void *bud()
{
return (node *)malloc(sizeof(node));
}
/////////////////////
void createNode(int data, node *ptr)
{
if(ptr==NULL)
{
ptr=bud();
ptr->data=data;
ptr->left=NULL;
ptr->right=NULL;
ROOT=ptr;
ptr=NULL;
printf("DONE");
return;
}
else if(data==ptr->data)
{
printf("Duplication not possible");
return;
}
else if (data<ptr->data)
{
//ptr=ptr->left;
createNode(data,ptr->left);
}
else if (data>ptr->data)
{
//ptr=ptr->right;
createNode(data,ptr->right);
}
else
{
printf("INVALID");
}
}
//////////////////////////////////////
void search(int data,node *ptr)
{
if(ptr==NULL)
{
printf("NOT FOUND");
return;
}
else if (ptr->data==data)
{
printf("Item Found");
return;
}
else if(data<ptr->data)
{
//ptr=ptr->left;
search(data,ptr->left);
}
else if (data>ptr->data)
{
//ptr=ptr->right;
search(data,ptr->right);
}
else
{
printf("INVALID");
}
}
/////////////////////////////////
void main()
{
int ch;
ch=0;
while (ch!=6)
{
printf("\nMENU\n1. Create Tree\n2. Search\n3. Inorder\n4.
Preorder\n5. Postorder\n6. Exit\n EnterYour Choice: ");
scanf("%d",&ch);
if(ch==1)
{
int dat;
printf("\nEnter the number to be inserted: ");
scanf("%d",&dat);
createNode(dat,ROOT);
}
else if(ch==2)
{
int dat;
printf("Enter number to be searched: ");
scanf("%d",&dat);
search(dat,ROOT);
}
else if(ch==6)
{
return;
}
else
{
printf("\nEnter a valid choice\n");
}
}
}
問題は論理エラーですが作られた間違いについて教えてくださいを追加することはできません。私はツリーの左または右の子を作成することはできません。ツリーに挿入するものがルートノードに挿入されます。
コード(リンクではない)とエラーが表示されます – Steve
質問の中にソースを含める必要があります。良い質問をする方法について[質問]と[質問]を参照して、回答を得るチャンスを最大化してください。 –
コード、エラー、サンプルデータ、またはテキスト出力を、外部リンクとしてではなくプレーンテキストとして投稿してください。期限切れになるか、問題とは無関係に更新される可能性があります。 '{}'ボタンを使ってコードのブロックを整形するか、同じ効果のために4つのスペースをインデントします。 – tadman