gpt4 book ai didi

algorithm - 向树中添加节点的函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:15 26 4
gpt4 key购买 nike

这个问题与二叉搜索树有关。这是我正在使用的节点的定义

struct _Node
{
_Node *Parent;
int Data;
_Node *Left;
_Node *Right;
};

下面是创建根后添加节点的函数定义

void AddNode(_Node *Incoming, _Node *currentNode)
{

if(!currentNode)
{
currentNode = Incoming;
}
else if(currentNode->Data >= Incoming->Data)
{
Incoming->Parent = currentNode;
AddNode(Incoming, currentNode->Left);
}
else if(currentNode->Data < Incoming->Data)
{
Incoming->Parent = currentNode;
AddNode(Incoming, currentNode->Right);
}

}

AddNode 函数基于递归方法。主要代码为

_Node *Root= new _Node;
Root->Data = 50;
Root->Parent = nullptr;
Root->Left = nullptr;
Root->Right = nullptr;


_Node *Node2 = new _Node;
Node2->Data = 25;
Node2->Parent = nullptr;
Node2->Left = nullptr;
Node2->Right = nullptr;
_Node *Node3 = new _Node;

AddNode(Node2, Root);

问题:一旦我退出添加节点功能,我发现根节点没有设置为节点 2 的左或右子节点。根据我的说法,每次我应该将节点正确添加到 Root 时,都会传递指向节点的指针。这没有发生。你能帮我看看我犯了什么错误吗?

最佳答案

尝试

AddNode(Incoming, currentNode->Left);

代替

AddNode(Incoming, Incoming->Left);

也是如此。

关于algorithm - 向树中添加节点的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11924935/

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