模板中的二叉树

Binary-Tree in Template

本文关键字:二叉树      更新时间:2023-10-16

所以我想写一个代码,创建一个二叉树,用来保存数据,比如像1,6,2,10,8这样的整数,pop时我得到最大的数字,之后它从树中被删除,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();
        myBT->AddItem(1);
        myBT->AddItem(7);
        myBT->AddItem(1);
        myBT->AddItem(10);
        myBT->AddItem(4);
        myBT->PrintTree();
    }

在表达式

new BinaryTree()

标识符BinaryTree是模板,而不是类。你的意思可能是

new BinaryTree<int>()