二进制搜索树电影数据库项目

Binary Search Tree Movie Database Project

本文关键字:项目 数据库 电影 搜索树 二进制      更新时间:2023-10-16

我现在正在做一个项目,该项目旨在充当一个小型电影数据库。二进制搜索树用于从该文件中读取信息:http://www2.cs.uidaho.edu/~bruceb/cs121/Assignments/movies.txt这个程序需要能够做一些事情:打印出所有的电影标题,只打印标题,让用户输入一个演员,让程序打印出该演员出演的所有电影,让用户输入一个标题,程序将显示电影中的所有演员,让该程序打印出1975年之前上映的所有电影。我是BST的新手,所以这对我来说特别困难。我没有要求任何代码,只是关于如何开始的建议是让用户输入一些内容,然后让程序在文件中搜索该信息更好,还是先将整个文件读取到树中,然后在树中搜索信息更好?任何建议/提示都将不胜感激。

解决方案的设计将基于搜索键;电影名称、演员、上映日期。

读取输入文件,将电影分组在一个树中,树的每个节点看起来像:

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一样存储在内存中(根据键存储的结构(带电影结构的电影名称、带电影键的演员名称、带视频键的发布日期))

二进制搜索树是一种用于存储数据的数据结构;它具有搜索和插入的能力,具有良好的复杂性(log(n)n)
我们有两种类型的二进制搜索树:非平衡树和平衡二进制搜索树(效率稍高)
一个简单的二进制树很容易实现:你可以在维基百科上找到关于它的有用信息
你有多种类型的平衡BST:2-3二进制搜索树,红黑树。。。。然而,平衡BST的实施充满了危险。