二进制搜索树电影数据库项目
Binary Search Tree Movie Database Project
我现在正在做一个项目,该项目旨在充当一个小型电影数据库。二进制搜索树用于从该文件中读取信息: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的实施充满了危险。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法在 CLion 中构建 C++ 项目
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 查询SQLite数据库中的日期
- 欧拉项目#8答案是大以获得有效答案
- 从链接列表c++中删除一个项目
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 既然存在危险,为什么项目要使用-I include开关
- cmake在我的项目中所需的所有静态库都不成功
- QT通过C++添加映射QML项目
- 鸟类调查中的项目在代码中遇到问题.如何像数据库系统一样存储数据
- MySQL数据库连接到一个c++win32项目
- 二进制搜索树电影数据库项目
- 我如何在Microsoft Visual c++ 2010 Express项目中创建本地数据库
- 在sqlite3数据库中搜索查询某些项目
- 将 sqlite 数据库包含在 C++ JNI 项目中
- Qt将数据库SQL添加到从cMake导入的项目中
- 在c++项目中包含数据库文件时出错