Дерево двоичного поиска, распечатывается только предупреждение о дубликатах для рекурсивной вставки - C ++ - PullRequest
1 голос
/ 28 мая 2020

Я все еще новичок в BST и пытаюсь написать метод рекурсивной вставки узла, используя частный метод, вызывающий метод publi c. Я пытался отладить, в чем может быть моя проблема, но для всех значений, которые я пытался вставить, вместо этого я получаю бесконечную последовательность предупреждающих сообщений, в которых говорится, что я не могу вставить дубликаты. Что я делаю не так?

Функция вставки:

template <class T>
void Bst<T>::insertNode(nodeType<T>* &p, const T& insertItem)
{

    if(p == nullptr)
    {
        nodeType<T> *newNode;
        newNode = new nodeType<T>;
        newNode->info = insertItem;
        newNode->lLink = nullptr;
        newNode->rLink = nullptr;
        p = newNode;
    }
    else
    {
        if(p->info == insertItem)
        {

            cout << "Insert failed: No duplicates allowed." << endl;

        }
        else if(p->info > insertItem)
        {
            return insertNode(p->lLink, insertItem);
        }
        else
            return insertNode(p->rLink, insertItem);
    }

}

Publi c метод:

template <class T>
void Bst<T>::insertNodeRecursive(const T& insertItem)
{
    insertNode(root, insertItem);
}

Основной метод, в котором я его использую:

void readTree(Vector<WindLogType> &windlog){

    Bst<Date> dateTree;

    for(int x = 1; x < windlog.vecsize(); x++)
    {
        dateTree.insertNodeRecursive(windlog[x].d);
    }

    dateTree.inOrderTraversal();

}

operator== перегрузка для сравнения значений дат:

bool operator==(const Date& firstDate, const Date& secondDate)
{
    if(firstDate.GetYear() == secondDate.GetYear() && firstDate.GetMonth() == secondDate.GetMonth() && firstDate.GetDay() == secondDate.GetDay())
    {

        return true;

    }
    else
    {
        return false;
    }

}

Если требуется больше кода, дайте мне знать, также мой конструктор по умолчанию устанавливает для моего узла dateTree root значение nullptr.

...