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