二叉搜索树电影数据库项目

时间:2013-11-20 16:37:56

标签: c++ file-io binary-search-tree

我正在开展一个项目,目的是充当一个小型电影数据库。二进制搜索树用于读取此文件中的信息:http://www2.cs.uidaho.edu/~bruceb/cs121/Assignments/movies.txt程序需要能够执行以下操作:打印出所有电影标题,仅打印标题,让用户输入演员并拥有程序打印所有电影说演员所在,让用户输入一个标题,程序将显示电影中的所有演员,并让程序打印出1975年之前发布的所有电影。我对BST很新,所以这个对我来说特别困难。 我不是要求任何代码,只是建议如何开始。让用户输入内容会更好,然后让程序在文件中搜索该信息,还是更好?首先将整个文件读入树中,然后在树中搜索信息?任何建议/提示将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

解决方案的设计将基于搜索键; movieNames,演员,发布日期。

读取输入文件并将树组合在一起,树的每个节点如下:

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;

请注意,有静态地图用于根据发布日期存储电影。

除了上面创建另一个存储所有actor的树,每个节点定义为:

struct Actor{

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

对于持久性,这些结构可以存储在数据库或内存中,如REDIS(针对键存储的结构(带有电影结构的电影名称,带有电影键的演员姓名,带电影键的发布日期))