C++ 在不同类型的二叉树中搜索二叉树
C++ Searching a binary tree inside a binary tree of different type
这些是树类中的函数,我会有一个状态树和人物树,我想在main中说state->find(fname,lname),所以TreeType将是State类型,因为状态是state类型。但是当 TreeType 的类型为 Person 时会发生错误,尽管我只在其类型为 State 时才调用该函数。
Person * find(string fname, string lname, node<Person> * n) {
if(n->data->lname == lname && n->data->fname == fname)
return n->data;
else if(n->data->lname > lname)
find(fname, lname, n->left);
else
find(fname, lname, n->right);
}
Person * find(string fname, string lname, node<TreeType> * n) {
node<Person> * temp = n->data->people->root;
Person * p = find(fname, lname, temp);
if(p != NULL)
return p;
find(fname, lname, n->left);
find(fname, lname, n->right);
}
Person * find(string fname, string lname) {
return find(fname, lname, root);
}
(强制性健全性检查:如果您出于学术原因不这样做,请使用std::map
s)。
您的第一个find
重载需要从递归调用返回值,并处理n
是nullptr
的情况,返回而不是取消引用它。
Person * find(string fname, string lname, node<Person> * n) {
if (!n)
return n;
if(n->data->lname == lname && n->data->fname == fname)
return n->data;
if(n->data->lname > lname)
return find(fname, lname, n->left);
return find(fname, lname, n->right);
}
同样在第二个重载中...您必须return
例如以下值:find(fname, lname, n->left);
.
如果您启用警告,大多数编译器会警告您此类错误 - 例如g++ -Wall
海湾合作委员会。
相关文章:
- 从父数组测试用例构造二叉树失败
- 打印时有二叉树问题.用户输入不打印任何内容
- 试图找到二叉树的深度
- 按位置搜索,二叉树C++
- 给定的二叉树是否是二叉搜索树
- 程序设置二叉树,打印和搜索 - 节点类C++
- C++ 在不同类型的二叉树中搜索二叉树
- 我试图证明一个给定的树是一个二进制搜索树.我将输入一个二叉树,我只想让函数返回true
- 二叉树搜索的实现和函数声明c++
- 按键值搜索无序的二叉树
- 二叉树搜索不起作用
- 需要二叉树程序的帮助(不是二叉搜索树)
- 函数用于检查二叉树是否为二叉搜索树或是否工作
- 二叉树搜索没有返回期望的值
- 在对象的二叉树中搜索单个类成员
- 如何创建二叉树(不是二叉搜索树)
- 二叉树搜索不返回结果(c++)
- 二叉树搜索和跟踪
- 在二叉树中搜索
- 基于数据集合执行二叉树搜索