该函数是关于二叉查找树的,代码片段如下:
void insert(const Comparable & x, TreeNode<Comparable> *&r)
{
if (r == NULL)
{
r = new TreeNode<Comparable>(x, NULL, NULL);
}
else if (x < r->element)
{
insert(x, r->leftChild);
}
else if (x > r->element)
{
insert(x, r->rightChild);
}
else
;
}
该函数主要负责二叉树节点的插入。
我的问题是这里的函数参数为什么使用TreeNode<Comparable> *&r
的形式,即引用的指针?而我经过测试如果直接使用指针作为参数的话,插入操作是无法正常运行的。
一般传入引用是为了返回修改后的值,你看看r在函数里有没有被修改,明显修改了,给了一个地址嘛,你再去看看是哪个地方用的这个函数,看看传入的r接下来做的什么就知道了。