Мне просто нужна любая помощь, которую я могу получить с этой реализацией. Это мой первый пост здесь, мне очень жаль, если я делаю что-то не так в посте. Как говорится в заголовке, в основном мне просто нужна реализация очереди с приоритетами с использованием двоичного дерева поиска (не могу использовать кучу или какой-либо другой метод). Я сделал все, что мог, я просто хочу знать, правильно ли это или какие-либо рекомендации. Кроме того, я не могу использовать ни массив, ни векторы. Спасибо!
код:
#include <iostream>
using namespace std;
template<class T>
class BST {
struct Node {
T data;
Node* leftChild;
Node* rightChild;
Node(T dataNew) { //Constructor to initialize data
data = dataNew;
leftChild = NULL;
rightChild = NULL;
}
};
private:
Node* root;
void Insert(T newData, Node*& theRoot) {
if (theRoot == NULL)
{
theRoot = new Node(newData);
return;
}
if (newData < theRoot->data)
Insert(newData, theRoot->leftChild);
else
Insert(newData, theRoot->rightChild);;
}
void PrintTree(Node* theRoot) {
if (theRoot != NULL)
{
PrintTree(theRoot->leftChild);
cout << theRoot->data << " ";;
PrintTree(theRoot->rightChild);
}
}
public:
BST() {
root = NULL;
}
void AddItem(T newData) {
Insert(newData, root);
}
void PrintTree() {
PrintTree(root);
}
};
int main() {
BST<int>* myBT = new BST<int>();
int data;
cout << "Enter val in the BST";
cout << "(-1 to end input):n";
cin >> data;
while (data != -1) {
myBT->AddItem(data);
cin >> data;
}
cout << "nInorder traversal of the BST : ";
myBT->PrintTree();
cout << endl;
return 0;
}