Нахождение наименьшего элемента в бинарное дерево поиска - ввод бесконечный цикл

голоса
0

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

вставка

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

Причина, почему (ИМО) мой MinValue () входит в бесконечный цикл из-за curPtr всегда не NULL. Как я могу сделать это после того, как я NULL вставил данные, используя функцию вставки ().

EDIT: Нашел bug..so глупый меня. Благодаря Раймонда

ниже отредактированного MinValue ()

int  minValue(node curPtr)
{
  node temp = curPtr;
  while ( temp->lChild )
  {
     temp = temp->lChild;
  }
  return (temp->info);
}

Благодаря Келли.

Задан 03/09/2011 в 16:09
источник пользователем
На других языках...                            


1 ответов

голоса
10

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

Ответил 03/09/2011 в 16:13
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more