关于查找二叉树的一个插入节点小问题
原代码如下:
void Tree::insertNode(const int &value)
{
insertNodeHelper(&rootptr,value);
}
void Tree::insertNodeHelper(int **ptr, const int &value)
{
if(*ptr==0)
*ptr=new int (value);
else
if(value<(*ptr)->data)
insertNodeHelper(&((*ptr)->leftptr),value);
else
if(value>(*ptr)->data)
insertNodeHelper(&((*ptr)->rightptr),value);
else
cout<<value<<" dup"<<endl;
}
我想不通为什么在查入操作的时候,传入的是根节点的地址&rootptr,我觉得直接插入rootptr也可以啊,于是修改如下:
void Treeint::insertNode(const int &value)
{
insertNodeHelper(rootptr,value);
}
void Tree::insertNodeHelper(int *ptr, const int &value)
{
if(ptr==0)
ptr=new int (value);
else
if(value<ptr->data)
insertNodeHelper(ptr->leftptr,value);
else
if(value>ptr->data)
insertNodeHelper(ptr->rightptr,value);
else
cout<<value<<" dup"<<endl;
}
可是运行后却发现插入操作没有成功,谁能告诉我这这是怎么回事?
问题点数:10、回复次数:1Top
1 楼qhfu(改个名字)回复于 2005-11-04 19:52:49 得分 10
因为传进去的是copy,所以改变只是copy值,,原来的值没有改变.Top




