它是一个带有无序traversal.there的二进制搜索树,在打印元素时是一个问题。我解决不了issue.Only,根目录是gettting,printed.it可能是一个语义错误,also.Maybe在inserting.or中有一些问题,在无序显示方面。
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *llink;
struct node *rlink;
};
typedef struct node bstnode;
bstnode *root=NULL;
void insert(int ele)
{
bstnode *cur,*prev,*temp;
temp=(bstnode *)malloc(sizeof(bstnode));
temp->data=ele;
temp->llink=temp->rlink=NULL;
cur=root;
prev=NULL;
if(root==NULL)
root=temp;
else
{
prev=cur;
while(cur!=NULL)
{
if(ele<cur->data)
cur=cur->llink;
else
cur=cur->rlink;
}
if(ele<prev->data)
prev->llink=temp;
else
prev->rlink=temp;
}
//return root;
}
void inorder()
{
if(root==NULL)
{
return;}
else{
inorder(root->llink);
printf("\n%d",root->data);
inorder(root->llink);
}
}
int main()
{
insert(45);
insert(76);
inorder();
}发布于 2020-09-28 14:58:23
在这个代码片段中
else
{
prev=cur;
while(cur!=NULL)
{
if(ele<cur->data)
cur=cur->llink;
else
cur=cur->rlink;
}
if(ele<prev->data)
prev->llink=temp;
else
prev->rlink=temp;
}这是一个合乎逻辑的错误。声明
prev=cur;应在下列时间内陈述。例如
while(cur!=NULL)
{
prev=cur;
if(ele<cur->data)
cur=cur->llink;
else
cur=cur->rlink;
}以及函数inorder。也不正确,因为声明时没有参数。
void inorder()
{
if(root==NULL)
{
return;}
else{
inorder(root->llink);
printf("\n%d",root->data);
inorder(root->llink);
}
}此外,还使用了数据成员llink两次。
它应该声明和定义如下
void inorder( const bstnode *node )
{
if ( node )
{
inorder( node->llink );
printf( "\n%d", node->data );
inorder( node->rlink );
}
}它被称为
inorder( root );发布于 2020-09-28 15:01:46
第一,部分。
prev=cur;
while(cur!=NULL)
{
if(ele<cur->data)
cur=cur->llink;
else
cur=cur->rlink;
}是错的。
由于prev=cur;的位置错误,prev将仅为root,而不是指向节点作为新节点的父节点。语句应该在循环中:
while(cur!=NULL)
{
prev=cur;
if(ele<cur->data)
cur=cur->llink;
else
cur=cur->rlink;
}其次,函数inorder是错误的。它是在root != NULL时无条件执行的。
如果忽略参数并无限地打印root,则应该使用一个参数来指定应该打印哪个节点。
使用llink twich也很奇怪。
它可以是这样的:
void inorder(bstnode* node)
{
if(node==NULL)
{
return;
}
else{
inorder(node->llink);
printf("\n%d",node->data);
inorder(node->rlink);
}
}而inorder();在main函数中应该是inorder(root);。
https://stackoverflow.com/questions/64104585
复制相似问题