我尝试了二叉树数据结构,但发现它无法正常工作并给出错误。请更正我的代码。谢谢!
它发出警告,但是在main
中输入后,它将停止运行。
#include<stdlib.h>
#include<stdio.h>
typedef struct
{
int item;
struct node * leftc;
struct node * rightc;
}node;
void create(int key, node **tree )
{
if(*tree ==0)
{
(*tree)= (node *)malloc(sizeof(node *));
(*tree)->item=key;
(*tree)->leftc=((*tree)->rightc)=NULL;
}
else
{
if(key >= (*tree)->item )
{
create(key, &((*tree)->rightc));
}
else if(key<(*tree)->item)
{
create(key, &((*tree)->leftc));
}
}
}
node * search(int key, node * tree)
{
if(tree !=NULL)
{
if(key == tree->item)
return tree;
else if(key > tree->item)
search(key, tree->rightc);
else
search(key, tree->leftc);
}
return NULL;
}
void cut(node * tree)
{
if(tree != NULL)
{
cut(tree->leftc);
cut(tree->rightc);
free(tree);
}
}
void print_preorder(node * tree)
{
if (tree) {
printf("%d\n",tree->item);
print_preorder(tree->leftc);
print_preorder(tree->rightc);
}
}
int main()
{
node * root=NULL;
create(9,&root);
create(16,&root);
create(24,&root);
create(6,&root);
return 0;
}
最佳答案
更改
typedef struct
{
int item;
struct node * leftc;
struct node * rightc;
}node;
至
typedef struct node
{
int item;
struct node * leftc;
struct node * rightc;
}node;
在您的结构中,您引用“结构节点”,因此您需要名称才能使其正确引用自身。当然,在typedef之后,您可以将其称为节点。
测试程序可以编译,并且可以使用其他代码正常运行。
关于error-handling - 二进制搜索:please tell me whats wrong here,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17328391/