Я использую рекурсивный метод для создания дерева двоичного поиска. Моя цель - найти самый низкий элемент в дереве. Ниже мой код.
Вставка
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;
}
Функция MinValue
int minValue(node curPtr)
{
node temp = curPtr;
while ( curPtr )
{
temp = curPtr->lChild;
}
return (temp->info);
}
Причина, по которой (IMO) мой minValue () входит в бесконечный цикл, заключается в том, что curPtr всегда не равен NULL. Как я могу сделать его NULL после того, как я вставил данные, используя функцию insert ().
РЕДАКТИРОВАТЬ: Нашел ошибку .. так глупо с моей стороны. Благодаря Раймонду
ниже отредактировано minValue ()
int minValue(node curPtr)
{
node temp = curPtr;
while ( temp->lChild )
{
temp = temp->lChild;
}
return (temp->info);
}
Спасибо
Келли.