我正在使用递归方法来创建二叉搜索树。我的目标是找到树中的最低元素。以下是我的代码。
node insert(node root, int value)
{
if ( root == NULL )
{
return ((newNode(value)));
}
if ( root->info == value )
{
std::cout<<"Duplicate entry found!"<<std::endl;
return root;
}
else if ( root->info > value )
{
root->lChild = insert(root->lChild,value);
}
else if ( root->info < value )
{
root->rChild = insert(root->rChild,value);
}
else
std::cout<<"Some error has occurred.Time to debug!"<<std::endl;
return root;
}
int minValue(node curPtr)
{
node temp = curPtr;
while ( curPtr )
{
temp = curPtr->lChild;
}
return (temp->info);
}
(IMO)myValue()进入无限循环的原因是由于curPtr始终不为NULL。在使用insert()函数插入数据后,如何使其为NULL。
编辑:发现了这个错误......对我来说太愚蠢了。感谢Raymond 下面是编辑的minValue()int minValue(node curPtr)
{
node temp = curPtr;
while ( temp->lChild )
{
temp = temp->lChild;
}
return (temp->info);
}
由于 凯利。
答案 0 :(得分:10)
您永远不会在循环中修改curPtr。