我试图将节点插入到二进制搜索树中,在左子树中插入一个节点没有问题,但在右子树插入一个节点会产生空指针异常问题 .
插入一个节点第一次正常工作,但是当我尝试在根的右侧部分插入一个新节点时,我发现root已经被赋予了一些垃圾值,而在遍历n时它会打印出空指针异常 .
typedef struct tree
{
int elt;
struct tree *left,*right;
}T;
T *RT=null;
void insert()
{
int n;
T *move,*temp,*back;
printf("\nEnter an element: ");
scanf("%d",&n);
temp=(T *)malloc(sizeof(T *));
temp->left=NULL;
temp->right=NULL;
temp->elt=n;
if(RT==NULL)
RT=temp;
else
{
move=RT;
while(move!=NULL)
{
back=move;
if(move->elt>=n)
move=move->left;
else if(move->elt<n)
move=move->right;
}
if(back->elt>=n)
back->left=temp;
else
back->right=temp;
}
printf("%d %d %d",RT->elt,RT->left->elt,RT->right->elt);
}