所以,我想打一个代码,创建一个二叉树,保存数据,例如整数像1,6,2,10,8和流行音乐我得到的最大数字,然后它从树中删除,并推我可以插入一个新的元素。这应该是在模板中,所以我可以很容易地改变我想要保存在树中的数据类型。现在我到目前为止,没有模板它是工作好思想,我可以添加项目,我可以打印它们,但是当我尝试把它放在模板中,我得到以下错误:使用类模板需要模板参数列表。可能是什么问题呢?也许我这样做完全错了。欢迎任何建议。使用二叉树的模板作为优先级队列
这是我的第一个问题就得到了由avakar TY固定。 (我会在我的问题结束后张贴代码)
我刚刚读了槽的项目请求,和它一样,我不得不让这个东西我在上面描述的问题的第一部分,但它像二进制树应该代表一个优先级队列。这就是为什么在写请求时,我必须使用push按优先级顺序在树中放置一个新元素,并使用弹出窗口,我将获得具有最高优先级的元素,然后该元素将被删除。那么我怎样才能将我的树用作优先队列呢,还是他已经是一个(我认为不是但是谁知道)?我希望我能解释它。
这里是如许的代码:
#include <iostream>
using namespace std;
template<class T>
class BinaryTree
{
struct Node
{
T data;
Node* lChildptr;
Node* rChildptr;
Node(T dataNew)
{
data = dataNew;
lChildptr = NULL;
rChildptr = NULL;
}
};
private:
Node* root;
void Insert(T newData, Node* &theRoot)
{
if(theRoot == NULL)
{
theRoot = new Node(newData);
return;
}
if(newData < theRoot->data)
Insert(newData, theRoot->lChildptr);
else
Insert(newData, theRoot->rChildptr);;
}
void PrintTree(Node* theRoot)
{
if(theRoot != NULL)
{
PrintTree(theRoot->lChildptr);
cout<< theRoot->data<<" ";;
PrintTree(theRoot->rChildptr);
}
}
public:
BinaryTree()
{
root = NULL;
}
void AddItem(T newData)
{
Insert(newData, root);
}
void PrintTree()
{
PrintTree(root);
}
};
int main()
{
BinaryTree<int> *myBT = new BinaryTree<int>();
myBT->AddItem(1);
myBT->AddItem(7);
myBT->AddItem(1);
myBT->AddItem(10);
myBT->AddItem(4);
myBT->PrintTree();
}
对不起,我正在投票结束这个问题。请随意将您的代码或有关BST的问题重新发布为优先级队列。 –
嗯...... C++标准库实现了一个优先级队列,而不是一棵树。我认为自平衡树也可以用于相同的目的,尽管树在叶节点中具有极端元素而不在根中。 –