用于将节点添加到树的功能

时间:2012-08-12 18:59:47

标签: algorithm c++-cli binary-search-tree

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

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);

问题: 一旦我退出添加节点功能,我发现Root节点没有将Left或Right Child设置为Node2。根据我的说法,每次我应该将节点正确添加到Root时,就会传递指向节点的指针。这不会发生。你能帮我解决一下这个错误吗?

1 个答案:

答案 0 :(得分:0)

尝试

AddNode(Incoming, currentNode->Left);

而不是

AddNode(Incoming, Incoming->Left);

Right相同。