gpt4 book ai didi

c - 二叉树插入根

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:48 26 4
gpt4 key购买 nike

我正在从一个包含一些整数的输入文件中读取整数,并尝试创建一个二叉树。我无法弄清楚为什么它一直在 (l==NULL) 中。第二次它应该向左或向右移动取决于读取值是否大于根值。感谢任何帮助。谢谢!

leaf* create_leaf(int i)
{
leaf* l = (leaf*)malloc(sizeof(leaf));
l->left = NULL;
l->right = NULL;
l->data = i;
}

leaf* l=NULL;
while(fscanf(input,"%d",&i) != EOF)
{
add_leaf(l,i);
}

void add_leaf(leaf* l, int i)
{

if(l == NULL)
{
printf("adding root\n");
l = create_leaf(i);
}

else if(i <= l->data)
{
if(l->left == NULL)
{
l->left = create_leaf(i);}
else {
add_leaf(l->left,i); }
}
else
{
if(l->right == NULL)
{
l->right = create_leaf(i); }
else {
add_leaf(l->right,i); }
}
}

最佳答案

您的代码有一些问题。

首要的主要问题是您没有返回在 create_leaf 函数中创建的叶子。

其次,请不要强制转换 malloc,这是不必要的并且可以掩盖问题。

第三请检查malloc的返回码。虽然即使 malloc 在过度使用系统上指示成功,也不能保证您的内存可用,但如果您得到 NULL 肯定会很糟糕。

关于c - 二叉树插入根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13899968/

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