【发布时间】:2019-06-21 23:06:19
【问题描述】:
我是 C 新手,刚开始学习如何使用指针。我正在尝试创建一个添加到 bst 的函数 (r),具体取决于参数 (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;
}
【问题讨论】:
-
你第一次调用
r(10, root)你有if (n > root->left->data)..在这种情况下root->left是NULL。
标签: c binary-search-tree