1
此问题与二叉搜索树有关。下面是我使用将节点添加到树的函数
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);
问题: 一旦我走出来添加节点功能,我发现根节点亘古不变的有向左或右子集到节点。根据我的说法,每当我将节点正确添加到根节点时,就会传递指向节点的指针。这没有发生。你能帮我理解我在做什么错误吗?
OO我的上帝这样一个愚蠢的错误,我正在做...我很抱歉,因为这么蹩脚...我认为它的时间对我来说这一天..感谢您的帮助 – virusrocks 2012-08-12 19:06:58
嘿吉尔,这个改变是还是行不通。实际上,早些时候我以同样的方式进行,但是重新定义了此功能并发出了复制粘贴错误。这仍然不起作用 – virusrocks 2012-08-12 19:12:59
尝试通过引用'void AddNode(_Node * Incoming,_Node *&currentNode)传递当前节点指针' – Gir 2012-08-12 19:15:31