gpt4 book ai didi

c - 段错误,c 中的二叉搜索树

转载 作者:行者123 更新时间:2023-11-30 18:11:56 25 4
gpt4 key购买 nike

我想使用此函数将数据插入到树中:

struct treeNode{
data* val;
struct treeNode *left, *right, *parent;
};


void insert(data *d, struct treeNode **leaf, struct treeNode **leaf_par)
{
if( *leaf == 0 )
{
*leaf = (struct treeNode*) malloc( sizeof( struct treeNode ) );
(*leaf)->val = d;
/* initialize the children to null */
(*leaf)->left = 0;
(*leaf)->right = 0;
/* initialize the parent */
(*leaf)->parent = *leaf_par; //here I receive segmentation fault
}
else if(strcmp(d->name, (*leaf)->val->name) < 0)
{
insert( d, &(*leaf)->left, &(*leaf) );
}
else if(strcmp(d->name, (*leaf)->val->name) > 0)
{
insert( d, &(*leaf)->right, &(*leaf) );
}
}

我主要有:

struct treeNode *root = NULL;
data d1 = {"Smith"};
insert(&d1, &root, NULL);

存在段错误:

(*leaf)->parent = *leaf_par;

第一次 *leaf_par 为 NULL,我不知道为什么它运行不正确。我应该如何修复我的插入功能?没有“父”指针,这很容易,但我必须使用“父”指针来做到这一点,但它不起作用。

最佳答案

您正在尝试取消引用 NULL;不要这样做。

第一次插入的简单修复是:

insert(&d1, &root, &root);

更深层次的插入到递归中将修复指针。

关于c - 段错误,c 中的二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42790248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com