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。
答案 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);
}