2011-11-18 84 views
4

所以我想創建一個代碼,創建一個二叉樹,保存數據,例如整數如1,6,2,10,8和流行音樂我得到最大的數字,以及後它從樹中被刪除,並在推我可以插入一個新的元素。這應該是在模板中,所以我可以很容易地改變我想要保存在樹中的數據類型。現在我到目前爲止,沒有模板它是工作好思想,我可以添加項目,我可以打印它們,但是當我嘗試將它放在模板中時,我得到以下錯誤:使用類模板需要模板參數列表。可能是什麼問題呢?也許我這樣做完全錯了。歡迎任何建議。模板中的二叉樹

我得到了以下代碼到目前爲止:

#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(); 
    } 

回答

5

在表達式

new BinaryTree() 

標識符BinaryTree是一個模板,而不是一個類。你的意思可能是

new BinaryTree<int>() 
+1

這是一個類和一個模板...這是一個類模板! – Marlon

+1

@Marlon,類模板?也許。類?也許不是。我需要停止看Futurama ... – avakar

+0

不確定,你們在說什麼,但現在它真的有效,所以非常感謝你。 –