gpt4 book ai didi

c - C 中的二叉搜索树插入函数

转载 作者:行者123 更新时间:2023-11-30 17:52:53 24 4
gpt4 key购买 nike

对于这个问题的 future 观众可能需要解决此类问题的帮助:我通过组合 2 个函数(InsertNode() 和 InTree())修复了它,我不确定这是否是不好的做法,我会回复你们,看看它是否确实解决了问题,或者只是掩盖了问题,但它似乎正在起作用......

我浏览了这个网站(以及其他网站)上的各种答案,并从这些答案中得到了没有帮助的解决方案(尝试过但不起作用或只是与我的程序没有不同)。插入函数(我已将其隔离并认为这是有问题的代码)在某处存在一些错误,导致我的程序崩溃。

NP InTree(NP Node,NP Root)
{
if (Root == NULL)
{
Root=Node;
return Root;
}
else
{
if (Node->Input < Root->Input)
{
return InTree(Node,Root->Left);
}
else if (Node->Input > Root->Input)
{
return InTree(Node,Root->Right);
}
else
{
puts("Duplicate");
return NULL;
}
}
}

void InsertNode(int I, TP Tree)
{

NP Node;
Node=(NP)malloc(sizeof(struct AVLNode));
InitializeNode(Node);
Node->Input=I;
Node->Height=0;
Node->Left=NULL;
Node->Right=NULL;
InTree(Node,Tree->Root);
Tree->Size++;
}

NP是节点指针,TP是树指针

Node变量是通过InsertNode()发送的初始化节点

void InitializeTree(TP Tree)
{

Tree->Root=NULL;
Tree->Size=0;
}

void InitializeNode(NP Node)
{

Node->Input=0;
Node->Height=0;
}

以上是我的初始化函数,以防您需要查看它们。

树的内存在调用任何函数之前在主类中分配。

我通过测试看到的主要问题是,一旦 Root 等于 Node,它仍然为空。

有什么办法可以解决这个问题吗?

最佳答案

InTree 函数中,Root 等于 Node,它仅更改本地内存。

相反,您可能需要使用指向指针的指针来实现您正在尝试的操作。

关于c - C 中的二叉搜索树插入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15934104/

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