У меня есть проект, который должен быть в понедельник вечером. Проект состоит в реализации Red Black Tree, который читает в декларации независимости как «Independence.txt» и помещает эти строки в красное черное дерево. Я пытаюсь реализовать его как двоичное дерево поиска сначала, а затем добавит цвета и вращения, поскольку у меня уже есть этот код.Двоичный поиск Дерево чтения в строках? C++
Проблема, с которой я столкнулся, заключается в том, что прямо сейчас я продолжаю получать следующие ошибки: «ошибка C2660« RBT :: Insert »: функция не принимает 1 аргумент» и «IntelliSense: не соответствующая функция преобразования из« std: строка "в" RBT :: RBTNode * "существует, а затем IntelliSense: слишком мало аргументов в вызове функции, указывающих на строку root.Insert (myString);
Мне также нужна помощь при чтении в файле в двоичном формате дерево поиска. Я думаю мой метод вставки правильно, и проблема заключается в основном методе.
Спасибо за любую помощь, как я застрял.
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
template<typename T>
class RBT
{
struct RBTNode {
T data;
RBTNode* left;
RBTNode* right;
};
public:
RBT();
~RBT();
void GetNewNode(RBTNode* root, T data);
void Insert(RBTNode* root, T data);
bool Search();
void Display();
};
template <typename T>
void RBT<T>::GetNewNode(RBTNode* root, T data) {
RBTNode* newNode = new RBTNode();
newNode->data = data;
newNode->left = newNode->right = NULL;
return newNode;
}
template <typename T>
void RBT<T>::Insert(RBTNode* root, T data) {
if (root == NULL) {
root = GetNewNode(data);
}
else if (data <= root->data) {
root->left = Insert(root->left, data);
}
else {
root->right = Insert(root->right, data);
}
return root;
}
template<typename T>
bool RBT<T>::Search() {
if (root == NULL) return false;
else if (root->data == data) return true;
else if (data <= root->data) return Search(root->left, data);
else return Search(root->right, data);
}
template<typename T>
void RBT<T>::Display() {
if (root->left != NULL)
display(root->left);
cout << root->left << endl;
if (root->right != NULL)
Display(root->right);
cout << root->right << endl;
}
int main()
{
RBT<string> root;
string myString;
ifstream infile;
infile.open("Independence.txt");
while (infile)
{
infile >> myString;
root.Insert(myString);
}
cin.ignore();
return 0;
}
RBTNode * newNode = new BstNode(); – schwer