如何通过递归在二叉树中插入元素?

时间:2017-04-12 15:00:13

标签: binary-tree

void Btree<T>::InsertNode2(T data, BtreeNode* root)
{
    if (root==NULL)
    {
        root = new BtreeNode (data);
        return ;
    }
    if (data <= root->data)
        InsertNode2(data, root->leftchild);
    else
        InsertNode2(data, root->rightchild);
}

为什么不对?根本无法正确分配。在调用该函数后,它仍然是NULL。

1 个答案:

答案 0 :(得分:0)

几乎是正确的。就像@DragonMoon所说的那样,你需要做的就是通过引用传递root

void Btree<T>::InsertNode2(T data, BtreeNode &* root)
{
    if (root==NULL)
    {
        root = new BtreeNode (data);
        return ;
    }
    if (data <= root->data)
        InsertNode2(data, root->leftchild);
    else
        InsertNode2(data, root->rightchild);
}