Я новичок в C, и я только начал изучать, как использовать указатели.Я пытаюсь создать функцию (r), которая добавляет к bst в зависимости от того, больше ли параметр (int n), чем значение корневых узлов.Тем не менее, я продолжаю получать ошибки сегментации (ядро сбрасывается) после запуска следующего кода.Как это исправить, чтобы он мог нормально работать без ошибок.
struct node {
int data;
struct node *left;
struct node *right;
}node;
struct node* newNode(int data){
struct node* node = (struct node*)malloc(sizeof(struct node));
node->data = data;
node->left = NULL;
node->right = NULL;
return (node);
}
void r (int n, struct node* root);
int main() {
struct node *root = newNode(1);
printf("%d", root->data);
r(10, root);
return 0;
}
void r(int n, struct node* root){
if(n > root->left->data){
root->right = newNode(n);
printf("New right is: %d\n", root->right->data);
}
else if(n < root->left->data){
int a = root->left->data;
root->left->data = n;
root->right->data = a;
printf("New left is: %d\n", root->left->data);
}
return;
}