У меня проблемы с созданием функции C ++, которая будет вставлять элемент в двоичное дерево, отсортированное по алфавиту.
Функция вставки должна работать следующим образом: пользователю предлагается ввести число,Это число будет указывать, сколько книг нужно ввести.Затем вводятся название и URL-адрес книги (определяется как структура), и книга вставляется в дерево в алфавитном порядке на основе первой буквы названия.
Я определил книгу, подобную этой, гдезаголовок и URL являются массивами символов:
struct bookNode {
char title[30];
char url[40];
char key;
bookNode *left;
bookNode *right;
} book;
И вот что у меня есть для функции вставки:
void insertBook () {
struct bookNode *p, *q;
int i, n;
char key;
cout << "Enter the number of books you want to add" << endl;
cin >> n;
for(i=0;i<n;i++) {
p = (struct bookNode *)malloc(sizeof(struct bookNode));
if(p==0)
cout << "Out of Memory" << endl;
cout << "Enter the title of the book" << endl;
cin.getline(book.title, 30);
key = book.title[0];
cout << "Enter the url of the book" << endl;
cin.getline(book.url, 40);
p->key; //I'm not sure if these next 3 lines are right
p->left=0;
p->right=0;
...
}
}
Я думаю, что мне, возможно, придется объявитькакой-то указатель на корень дерева тоже, но я не уверен, где его поставить.И я также понимаю, что мне нужно написать отдельную функцию «поиска», которую я буду вызывать в этой функции вставки, чтобы найти, куда на самом деле вставить книгу, но я просто ищу помощи, чтобы закончить эту функцию вставки.