Нахождение наименьшего элемента в бинарном дереве поиска - ввод бесконечного цикла - PullRequest
0 голосов
/ 03 сентября 2011

Я использую рекурсивный метод для создания дерева двоичного поиска. Моя цель - найти самый низкий элемент в дереве. Ниже мой код.

Вставка

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);
}

Спасибо Келли.

1 Ответ

10 голосов
/ 03 сентября 2011

Вы никогда не изменяете curPtr в вашем цикле.

...