| | |
errors in code
Please support our C++ advertiser: Intel Parallel Studio Home
![]() |
I need help with the assignment operator and destructor, and the deleting by copy. Can someone help me with this? and when i compile just this i get an error on line 219 saying term does not evaluate to a function taking 0 arguments. Does anyone know what this means
c++ Syntax (Toggle Plain Text) -
- #include <iostream>
- using namespace std;
-
- // Node used in BST
- struct BSTNode {
- int key;
- BSTNode* left;
- BSTNode* right;
- };
-
- // Binary Search Tree
- class BST {
- private:
- BSTNode* root;
- int size;
-
- bool insert (BSTNode* newNode);
- BSTNode** find (int key);
- void preOrderTraversal (BSTNode* subRoot);
- void inOrderTraversal (BSTNode* subRoot);
- void postOrderTraversal (BSTNode* subRoot);
-
- public:
- // Managers
- BST ();
- BST (BST& bst);
- ~BST ();
- BST& operator = (BST& bst);
-
- // Accessors
- bool isEmpty ();
- bool isFull ();
- void preOrderTraversal ();
- void inOrderTraversal ();
- void postOrderTraversal ();
-
- // Mutators
- bool insert (int key);
- bool deleteByMerge (int key);
- bool deleteByCopy (int key);
- };
-
- // default Constructor
- BST::BST () {
- root = NULL;
- size = 0;
- }
- // Copy Constructor
- BST::BST (BST& bst) {
- root = bst.root;
- size = bst.size;
- }
-
- /*************************************/
- // Destructor
- BST::~BST () {
- // delete root until tree is empty
- }
-
- // Assignment Operator
- BST& BST::operator = (BST& bst) {
- // ???
- return *this;
- }
- /***************************************/
- // isEmpty: returns if tree is empty
- bool BST::isEmpty () {
- return !root;
- }
-
- // isFull: returns if memory is available
- bool BST::isFull () {
- BSTNode* bogusNode = NULL;
- bogusNode = new BSTNode;
- if (bogusNode) {
- delete bogusNode;
- return false;
- }
- return true; // Note: nothing allocated
- }
-
- // insert (public): adds a node to tree given key data
- bool BST::insert (int key) {
- if (isFull())
- return false;
-
- BSTNode* newNode = new BSTNode;
- newNode->key = key;
- newNode->left = NULL;
- newNode->right = NULL;
- if (insert (newNode))
- return true;
- delete newNode;
- return false;
- }
-
- // insert (private): adds a node to tree given new-node
- bool BST::insert (BSTNode* newNode) {
- BSTNode** walker = &root;
- while (*walker) {
- if ((*walker)->key > newNode->key)
- walker = &((*walker)->left);
- else if ((*walker)->key < newNode->key)
- walker = &((*walker)->right);
- else // Duplicate of key found
- return false;
- }
- *walker = newNode;
- return true;
- }
-
- // find (private): returns dbl-pointer to target
- BSTNode** BST::find (int key) {
- BSTNode** walker = &root;
- while (*walker) {
- if ((*walker)->key == key)
- break;
- else if ((*walker)->key > key)
- walker = &((*walker)->left);
- else
- walker = &((*walker)->right);
- }
- return walker; // Note: if *walker is NULL, key not found
- }
-
- // delete (public): using by-merge method: delete node containing key data
- bool BST::deleteByMerge (int key) {
- // find pointer to target deletion
- BSTNode** walker = find(key);
-
- // Determine whether key is found and deletion is to occur
- if (!(*walker))
- return false; // deletion failed - target not found
- // keep pointer to node for deletion
- BSTNode* eliminationNode = *walker;
-
- //CASE I - left-subtree exists
- if (eliminationNode->left) {
- // find right-most child of left subtree
- BSTNode** rtMostOfLeftSubtree = &(eliminationNode->left);
- while (*rtMostOfLeftSubtree)
- rtMostOfLeftSubtree = &((*rtMostOfLeftSubtree)->right);
-
- // link right-most child of left subtree to right of target deletion
- *rtMostOfLeftSubtree = eliminationNode->right;
-
- // bypass target deletion
- *walker = eliminationNode->left;
- }
- // CASE II - no left-subtree
- else {
- // bypass target deletion
- *walker = eliminationNode->right;
- }
-
- // delete target
- delete eliminationNode;
-
- // return success of deletion
- return true; // deletion successful
- }
-
- /****************************/
- // delete (public): using by-copy method: delete node containing key data
- bool BST::deleteByCopy (int key) {
- // Use code from deleteByMerge where appropriate
-
- // CASE I - target has no children
- // CASE II - target has left child, but no right child
- // CASE III - target has right child, but no left child
- // CASE IV - target has two children
-
- // return success of deletion
- return true; // deletion successful
- }
-
- // preOrderTraversal (public): calls private preOrderTraversal
- void BST::preOrderTraversal () {
- cout << "Pre-Order Traversal" << endl;
- preOrderTraversal(root);
- cout << "\b\b " << endl << endl;
- }
-
- // preOrderTraversal (private): traverses tree by preOrder
- void BST::preOrderTraversal (BSTNode* subRoot) {
- // base case
- if (!subRoot)
- return;
-
- // recursive method
- // process node
- cout << subRoot->key << ", ";
- // move left
- preOrderTraversal(subRoot->left);
- // move right
- preOrderTraversal(subRoot->right);
- }
-
- // inOrderTraversal (public): calls private inOrderTraversal
- void BST::inOrderTraversal () {
- cout << "In-Order Traversal" << endl;
- inOrderTraversal(root);
- cout << "\b\b " << endl << endl;
- }
- // inOrderTraversal (private): traverses tree by inOrder
- void BST::inOrderTraversal (BSTNode* subRoot) {
- //base case
- if (subRoot == NULL)
- return;
- //rec case
-
- //go right
- inOrderTraversal(subRoot->left());
- //go left
- cout << subRoot->key << ", ";
- //process
- inOrderTraversal(subRoot->right());
- }
-
- // postOrderTraversal (public): calls private postOrderTraversal
- void BST::postOrderTraversal () {
- cout << "Post-Order Traversal" << endl;
- postOrderTraversal(root);
- cout << "\b\b " << endl << endl;
- }
- // postOrderTraversal (private): traverses tree by postOrder
- void BST::postOrderTraversal (BSTNode* subRoot) {
- //base case
- if (subRoot == NULL)
- return;
- //rec case
-
- //go left
- postOrderTraversal(subRoot->left());
- //go right
- postOrderTraversal(subRoot->right());
-
- cout << subRoot->key << ", ";
-
- }
-
- /****************************/
- void main () {
- BST bst;
- bst.insert(5);
- bst.insert(10);
- bst.insert(3);
- bst.insert(4);
- bst.insert(9);
- bst.insert(7);
- bst.insert(8);
- bst.preOrderTraversal();
- bst.inOrderTraversal();
- bst.postOrderTraversal();
-
- }
Last edited by chubbywubba; Feb 5th, 2008 at 3:23 pm. Reason: forgot to put what the error was
![]() |
Similar Threads
- Compile errors [help] [ log ] (C++)
- compilation errors (C++)
- 2 Compile errors in my array program (C)
- Tabs causing errors (PHP)
- help with errors (C++)
- Help with error checking code (C++)
- confused with errors in c++ (C++)
Other Threads in the C++ Forum
- Previous Thread: is it possible to return more than one int?
- Next Thread: Problem declaring class object array
| Thread Tools | Search this Thread |
api array based beginner binary c++ c/c++ calculator char char* class classes code compile compiler console conversion count delete deploy desktop directshow dll download dynamic dynamiccharacterarray email encryption error file forms fstream function functions game givemetehcodez google graph gui homeworkhelp homeworkhelper iamthwee ifstream input int integer java lib linkedlist linker linux list loop looping loops map math matrix memory news numbertoword output parameter pointer problem program programming project proxy python random read recursion recursive reference return rpg sorting string strings struct temperature template templates test text text-file tree unix url variable vector video visual visualstudio win32 windows winsock wordfrequency wxwidgets






