C++ C++;二叉搜索树-复杂类型
我需要为2种类型的对象实现一个BST;帐户和客户。这两种类型都有一个pk(都称为“id”)。C++ C++;二叉搜索树-复杂类型,c++,data-structures,binary-search-tree,C++,Data Structures,Binary Search Tree,我需要为2种类型的对象实现一个BST;帐户和客户。这两种类型都有一个pk(都称为“id”)。 当我搜索一个解决方案时,我可以找到大量的BST解决方案,但它们似乎都适用于简单类型,例如,BST解决方案可以对{1,2,3,4,99,…999}等整数进行排序,但我希望BST解决方案能够根据复杂类型/类的pk对其进行排序。这可能吗/有什么建议吗?谢谢。用于构建整数二元搜索树的逻辑应该可以立即推广到其他数据类型。与其在每个节点中存储一个整数作为键,不如在每个字段中存储您的客户和帐户名称,但在进行查找时,只
当我搜索一个解决方案时,我可以找到大量的BST解决方案,但它们似乎都适用于简单类型,例如,BST解决方案可以对{1,2,3,4,99,…999}等整数进行排序,但我希望BST解决方案能够根据复杂类型/类的pk对其进行排序。这可能吗/有什么建议吗?谢谢。用于构建整数二元搜索树的逻辑应该可以立即推广到其他数据类型。与其在每个节点中存储一个整数作为键,不如在每个字段中存储您的客户和帐户名称,但在进行查找时,只比较主键。事情真的应该这么简单 这就是说,除非这是家庭作业,否则您应该只使用std::map,它具有与二叉搜索树相同的复杂性保证,但已经为您编写了,广泛可用,并且经过了大量测试
希望这有帮助 一种方法是修改节点定义,添加对要存储的对象的引用,并设置索引(在本例中为pk),以对注释进行排序。在使用不同类型时,模板可能会解决以下问题:
class Account
{
public:
Account(int k) : pk(k) {};
int pk;
/* ... */
};
template<typename T>
class TreeNode
{
public:
TreeNode(T& the_object) : id(the_object.pk), object(the_object) {};
int id;
T& object;
};
int main () {
Account a(9);
TreeNode<Account> tn(a);
std::cout << tn.id;
}
类帐户
{
公众:
账户(INTK):pk(k){};
int-pk;
/* ... */
};
模板
三烯类
{
公众:
TreeNode(T&the_object):id(the_object.pk),object(the_object){};
int-id;
T&object;
};
int main(){
账户a(9);
TreeNode-tn(a);
std::cout为什么不直接使用std::map
(或类似的)?如果这是家庭作业,也许模板会有所帮助。否则,为什么不按照奥利的建议使用std::map或std::multimap呢?您实际上想要完成的是什么?为什么是BST?
class Indexable
{
public:
Indexable(int the_pk) : pk(the_pk) {};
int pk;
};
class Account : public Indexable
{
public:
Account(int k) : Indexable(k) {};
/* ... */
};
class TreeNode
{
public:
TreeNode(Indexable& the_object) : id(the_object.pk), object(the_object) {};
int id;
Indexable& object;
};
int main () {
Account a(9);
TreeNode tn(a);
std::cout << tn.id;
}