2010-12-06 15 views
3

これは宿題です。バイナリ検索ツリーのヘルプが必要です。C++宿題 - バイナリ検索ツリーヘルプ

このプログラムは、人を抽象基本クラスとして使用する多態性、およびPersonを継承する他のタイプの人を表示することです。それぞれの人は姓を持っています。私はバイナリ検索ツリーを使って人を姓でアルファベット順に並べようとしています。

私は許容できるバイナリ検索ツリーであると思うものを書いていますが、まだエラーが発生しています。バイナリ検索ツリーには、挿入機能とトラバース機能だけが必要です。再帰的であるべきです。

私は取得していますエラーがあります。エラー19エラーC4430:欠落している型指定 - INTこれはライン51、64で発生し、70ここに私のコードですbst.cpp

を仮定:

ヘッダーファイル:

#ifndef BST_H 
#define BST_H 

template <class T> 
class BST 
{ 
    private: 
     class BinNode 
     { 
      public: 
       BinNode(void); 
       BinNode(T node); 

       BinNode *left; 
       BinNode *right; 
       T data; 
     }; 

     BinNode* root; 

    public: 
     BST(); 
     ~BST(); 

     void insert(const T &); 
     void traverse(); 
     void visit(BinNode *); 


    //Utlity Functions 
    private: 
     void insertAux(BinNode* &, BinNode *); 
     void traverseAux(BinNode *, ostream &); 
}; 

#include "BST.cpp" 
#endif 

実装ファイル:

#include <iostream> 
#include <string> 

using namespace std; 

#ifdef BST_H 

template <class T> 
BST<T>::BinNode::BinNode() 
{ 
    left = right = 0; 
} 

template <class T> 
BST<T>::BinNode::BinNode(T node) 
{ 
    left = right = 0; 
    data = node; 
} 

template <class T> 
BST<T>::BST() 
{ 
    root = 0; 
} 

template <class T> 
void BST<T>::insertAux(T i, BinNode* &subRoot) 
{ 
    //inserts into empty tree 
    if(subRoot == 0) 
     subRoot = new BinNode(i); 
    //less then the node 
    else if(i<subRoot->data) 
     insertAux(i, subRoot->left); 
    //greater then node 
    else 
     insertAux(i, subRoot->right); 
} 

template <class T> 
void BST<T>::insert(const T &i) 
{ 
    insertAux(T i, root) 
} 

template <class T> 
BST<T>::traverse() 
{ 
    traverseAux(root); 
} 

template <class T> 
BST<T>::traverseAux(BinNode *subRoot) 
{ 
    if (subRoot == 0) 
     return; 
    else 
    { 
     traverseAux(subRoot->left); 
     visit(subRoot); 
     traverseAux(subRoot->right); 
    }  
} 

template <class T> 
BST<T>::visit(BinNode *b) 
{ 
    cout << b->data << endl; 
} 

#endif 

誰かが私のためにこれを一目見て、私にいくつかのヒントを与えることができますか?今は本当に混乱しています。ありがとう!

+1

エラーが発生している行を明示してください。私たちを数えないでください。 –

+1

'欠落型指定子' - 何が欠けているのだろうか:) –

答えて

3

一部の関数定義で戻り値の型を省略しました。例えば

template <class T> 
BST<T>::traverse() 
{ 
    traverseAux(root); 
} 

は次のようになります。

template <class T> 
void BST<T>::traverse() 
{ 
    traverseAux(root); 
} 
1

あなたはBST<T>::traverse()他errosと同様

void BST<T>::traverse()に変更する必要があります。