I am implementing a templated class to make a Binary Search Tree, but upon compilation I get the following errors:
BinaryNodeTree.cpp:7:1: error: 'BinaryNodeTree' does not name a type 7 | BinaryNodeTree<ItemType>::BinaryNodeTree(){ | ^~~~~~~~~~~~~~ BinaryNodeTree.cpp:18:1: error: 'BinaryNode' does not name a type 18 | BinaryNode<ItemType>* BinaryNodeTree<ItemType>::newTree(const BinaryNode<ItemType>* cTree) m const{ | ^~~~~~~~~~ BinaryNodeTree.cpp:31:20: error: expected initializer before '<' token 31 | void BinaryNodeTree<ItemType>::add(const ItemType& newData){ | ^ BinaryNodeTree.cpp:38:1: error: 'BinaryNode' does not name a type 38 | BinaryNode<ItemType>* BinaryNodeTree<ItemType>::inOrderAdd(BinaryNode<ItemType>* subPtr, BinaryNode<ItemType>* newNodePtr){ | ^~~~~~~~~~ BinaryNodeTree.cpp:59:24: error: expected initializer before '<' token 59 | ItemType BinaryNodeTree<ItemType>::getEntry(const int& value) const{ ..etc.. for all my classes. Here is my .h file followed by my CPP file:
BinaryNodeTree.h:
#ifndef BINARY_NODE_TREE #define BINARY_NODE_TREE #include "BinaryNode.h" #include "NotFoundException.h" #include <iostream> template<class ItemType> class BinaryNodeTree //:public BinaryTreeInterface<ItemType> { private: BinaryNode<ItemType>* rootPtr; protected: //------------------------------------------------------------ // Protected Utility Methods Section: // Helper methods for public methods. //------------------------------------------------------------ int getNumberOfNodesHelper(BinaryNode<ItemType>* subTreePtr) const; BinaryNode<ItemType>* removeValue(BinaryNode<ItemType>* subTreePtr, const int& target, bool& success); BinaryNode<ItemType>* removeNode(BinaryNode<ItemType>* nodeToDeletePtr); BinaryNode<ItemType>* removeLeftmostNode(BinaryNode<ItemType>* nodeToDeletePtr, ItemType& inorderSuccessor); bool isLeaf(BinaryNode<ItemType>* nodeToDeletePtr); void destroyTree(BinaryNode<ItemType>* subTreePtr); BinaryNode<ItemType>* findNode(BinaryNode<ItemType>* subTreePtr, int value) const; void inorderHelper(void visit(ItemType&), BinaryNode<ItemType>* subTreePtr) const; void preorderHelper(void visit(ItemType&), BinaryNode<ItemType>* subTreePtr) const; void postorderHelper(void visit(ItemType&), BinaryNode<ItemType>* subTreePtr) const; void levelOrderHelper(void visit(ItemType&), BinaryNode<ItemType>* subTreePtr, int level); BinaryNode<ItemType>* inOrderAdd(BinaryNode<ItemType>* subPtr, BinaryNode<ItemType>* newNodePtr); BinaryNode<ItemType>* newTree(const BinaryNode<ItemType>* cTree) const; //BinaryNode<ItemType>* getLeftmostNodeHelper(BinaryNode<ItemType>* nodeToGetPtr, ItemType& inorderSuccessor); public: //------------------------------------------------------------ // Constructor and Destructor Section. //------------------------------------------------------------ BinaryNodeTree(); // creates an empty BST //BinaryNodeTree(const BinaryNodeTree<ItemType>& tree); ~BinaryNodeTree(); //------------------------------------------------------------ // Public Methods Section. //------------------------------------------------------------ bool isEmpty() const; int getNumberOfNodes() const; void add(const ItemType& newEntry); bool remove(const int& value); //throw(NotFoundException); ItemType getEntry(const int& value) const; //throw(NotFoundException); bool contains(const int& value) const; ItemType getRootData() const; void setRootData(const ItemType& newData); void clear(); //ItemType getLeftmostNode(); int getHeight(BinaryNode<ItemType>* subTreePtr) const; //------------------------------------------------------------ // Public Traversals Section. //------------------------------------------------------------ void levelOrderTraverse(void visit(ItemType&)); void preorderTraverse(void visit(ItemType&)) const; void inorderTraverse(void visit(ItemType&)) const; void postorderTraverse(void visit(ItemType&)) const; //------------------------------------------------------------ }; // end BinaryNodeTree #include "BinaryNodeTree.cpp"
没有评论:
发表评论