Привет, stackoverflowers, У меня возникла проблема с моей функцией в C, я хочу создать функцию, которая даст мне минимальное и максимальное значение в BST. Проблема заключается в том, когда я использую эту функцию возвращает то же значение для мин и макс:Найти максимальное и минимальное значение BST
void Find_Min_Max(node *bt,int* maxint,int* minint)
{
node *tmp = bt;
if(bt == NULL)
{
*maxint = 0; // Only if the tree contains nothing at all
*minint = 0; // Only if the tree contains nothing at all
}
if(bt->left)
return Find_Min_Max(bt->left,&(*maxint),&(*minint));
*minint = bt->data;
if(tmp->right)
return Find_Min_Max(tmp->right,&(*maxint),&(*minint));
*maxint = tmp->data;
}
Но когда я использую его, чтобы дать мне только один результат макс/мин, я удалить эту часть кода, все работы отлично:
if(tmp->right)
return Find_Min_Max(tmp->right,&(*maxint),&(*minint));
*maxint = tmp->data;
Любая идея, как это будет работать ?. Спасибо заранее.
Не останавливается ли рекурсия, когда вы находите минимальное или максимальное значение? т. е. если min и max находятся в разных половинах, то он найдет только один из них. – shinzou
Что такое 'tmp'? Разве вы не должны использовать 'bt-> right' вместо' tmp'? –
@ FilipeGonçalves - это то же самое, что функция возвращает одно и то же значение для max и min – ZeroOne