Бинарное дерево поиска

0

Сейчас я работаю над проектом, который должен действовать как небольшая база данных фильмов. Двоичное дерево поиска предназначено для чтения информации из этого файла: http://www2.cs.uidaho.edu/~bruceb/cs121/Assignments/movies.txt Программа должна иметь возможность сделать несколько вещей: распечатать все названия фильмов и только заголовки, пользователь вводит актера и имеет программу, распечатывающую все фильмы, в которых присутствует актер, введите пользователя в заголовок, и программа отобразит всех участников фильма и распечатает программу из всех фильмов, выпущенных до 1975 года. Я очень новичок в BST, так что это было особенно сложно для меня. Я не прошу ни о каком коде, просто совет о том, как начать. Было бы лучше, если бы пользователь ввел что-то, а затем попробовал поиск файла для этой информации, или было бы лучше сначала прочитать весь файл в дереве, а затем найти информацию в дереве? Любые советы/советы будут высоко оценены.

  • 0
    Очевидная отправная точка: SQL. Очевидная отправная точка в C ++: Boost MultiIndex .
Теги:
file-io
binary-search-tree

2 ответа

0

Дизайн решений будет основан на ключах поиска; filmNames, актеры, даты выпуска.

Прочитайте входной файл и группу Фильмы вместе в дереве с каждым узлом дерева, похожим на:

struct Movie{

string name;
int releaseYear;
vector<Actor*> actorsInMovie;
static map<int, list<Movie*> > movieReleaseByYearMap;
//or if just movie name is required then
// static map<int, list<string> > movieReleaseByYearMap;
}m1;

Обратите внимание, что есть статическая карта, которая должна использоваться для хранения фильмов с датой выпуска.

В дополнение к выше создайте другое дерево, в котором хранятся все участники, каждый узел определяется как:

struct Actor{

string name;
vector<Movie*> moviesDone;
 //if only movie name is required then
 // vector<string> moviesDone;
}actor1;

Для Persistence эти структуры могут храниться в базе данных или в памяти, например, REDIS (структуры, хранящиеся в ключах (имена фильмов с фильтровой структурой, имена актеров с клавишами кинопленки, дата выпуска с клавишами кино))

0

Двоичное дерево поиска - это структура данных, используемая для хранения данных; он имеет возможность поиска и вставки с хорошей сложностью (log (n) n).
У нас есть два типа дерева двоичного поиска: не сбалансированное дерево и сбалансированное двоичное дерево поиска (немного более эффективное).
Простое двоичное дерево легко реализовать: вы можете найти полезную информацию об этом в википедии.
У вас есть несколько типов сбалансированных BST: 2-3 дерева двоичного поиска, дерево Red-Black... Однако реализация сбалансированных BST чревата опасностью.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню