Здесь я написал код, который вставляет числа в двоичное дерево. Но он дает ошибку ошибки сегментации. А также он говорит: «Примечание: ожидаемый" структура дерева *, но аргумент типа "структура узла *» в строке 8. Вот код: -Ошибка сегментации двоичного дерева
#include<stdio.h>
#include<stdlib.h>
struct tree{
int data;
struct tree *left;
struct tree *right;
};
struct tree* insert(struct tree* node, int data)
{
if(!node){
node=malloc(sizeof(struct tree));
node->data=data;
node->left=node->right=NULL;
return node;
}
else {
if(data>node->data){
node->right= insert(node->right,data);
return node;
}
else{
node->left= insert(node->left,data);
}
return node;
}
}
printtree(struct tree* node)
{
if(node){
printf("%d",node->data);
}
printtree(node->left);
printtree(node->right);
}
main()
{
int i,n;
struct tree *NODE;
NODE= insert(NODE,5);
NODE= insert(NODE,3);
NODE= insert(NODE,8);
printtree(NODE);
}
Где 'структура node' определяется? – Kninnug
Попробуйте скомпилировать с предупреждениями, чтобы начать видеть, что пошло не так, что вы можете исправить сразу. – Nobilis
Слишком много ошибок. Как отмечает Бретт Хейл, 'struct tree * node' не инициализируется,' struct tree * treenode' нигде не используется, и я также считаю, что в определении структуры оба 'struct node' должны быть' struct tree' –