Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Please use the linked approach implement the BST ADT, implement all the functions in the BSTree.cpp. Add the ouput of the implementation. use recursive functions

Please use the linked approach implement the BST ADT, implement all the functions in the BSTree.cpp. Add the ouput of the implementation.

use recursive functions to traverse the tree - read the implementation notes on using helper functions.

Please use C++ programming

//////////////////////////////////////////////////////////////

#include "BSTree.h"

template BSTree::BSTreeNode::BSTreeNode ( const DataType &nodeDataItem, BSTreeNode *leftPtr, BSTreeNode *rightPtr ) { }

template < typename DataType, class KeyType > BSTree::BSTree () { root = 0; }

template < typename DataType, class KeyType > BSTree::BSTree ( const BSTree& other ) { }

template < typename DataType, class KeyType > void BSTree:: copyTree(const BSTree &otherTree) { copyTreeHelper(root, otherTree.root); }

template < typename DataType, class KeyType > void BSTree:: copyTreeHelper(BSTreeNode *&p, const BSTreeNode *otherPtr) { if (p != 0) { p = new BSTreeNode(otherPtr->dataItem, 0, 0); copyTreeHelper(p->left, otherPtr->left); copyTreeHelper(p->right, otherPtr->right); } }

template < typename DataType, class KeyType > BSTree& BSTree:: operator= ( const BSTree& other ) {

}

template < typename DataType, class KeyType > BSTree::~BSTree () {

}

template < typename DataType, class KeyType > void BSTree::insert ( const DataType& newDataItem ) {

}

template < typename DataType, class KeyType > bool BSTree::retrieve ( const KeyType& searchKey, DataType& searchDataItem ) const { return false; }

template < typename DataType, class KeyType > bool BSTree::remove ( const KeyType& deleteKey ) { return false; }

template < typename DataType, class KeyType > bool BSTree::removeHelper(BSTreeNode *&p, const KeyType& deleteKey) {

}

template < typename DataType, class KeyType > void BSTree::writeKeys () const {

}

template < typename DataType, class KeyType > void BSTree::writeLTHelper(BSTreeNode *p, const KeyType& searchKey) const {

}

template < typename DataType, class KeyType > void BSTree::clear () {

}

template < typename DataType, class KeyType > void BSTree::clearHelper(BSTreeNode *p) {

}

template < typename DataType, class KeyType > bool BSTree::isEmpty () const { return false; }

template < typename DataType, class KeyType > int BSTree::getHeight () const { return -1; }

template < typename DataType, class KeyType > int BSTree::getHeightHelper(BSTreeNode *p) const {

}

template < typename DataType, class KeyType > int BSTree::getCount () const { return -1; }

template < typename DataType, class KeyType > int BSTree::getCountHelper(BSTreeNode *p) const {

}

template < typename DataType, class KeyType > void BSTree::writeLessThan ( const KeyType& searchKey ) const { }

#include "show9.cpp"

/////////////////////////////////////////////////////////////////////////////////////////

Class declarations for the linked implementation of the Binary // Search Tree ADT -- including the recursive helpers of the // public member functions // //--------------------------------------------------------------------

#ifndef BSTREE_H #define BSTREE_H

#include #include

using namespace std;

template < typename DataType, class KeyType > // DataType : tree data item class BSTree // KeyType : key field { public:

// Constructor BSTree(); // Default constructor BSTree(const BSTree& other); // Copy constructor BSTree& operator= (const BSTree& other); // Overloaded assignment operator

// Destructor ~BSTree();

// Binary search tree manipulation operations void insert(const DataType& newDataItem); // Insert data item bool retrieve(const KeyType& searchKey, DataType& searchDataItem) const; // Retrieve data item bool remove(const KeyType& deleteKey); // Remove data item void writeKeys() const; // Output keys void clear(); // Clear tree

// Binary search tree status operations bool isEmpty() const; // Tree is empty // !! isFull() has been retired. Not very useful in a linked structure.

// Output the tree structure -- used in testing/debugging void showStructure() const;

// In-lab operations int getHeight() const; // Height of tree int getCount() const; // Number of nodes in tree void writeLessThan(const KeyType& searchKey) const; // Output keys < searchKey

protected:

class BSTreeNode // Inner class: facilitator for the BSTree class { public:

// Constructor BSTreeNode(const DataType &nodeDataItem, BSTreeNode *leftPtr, BSTreeNode *rightPtr);

// Data members DataType dataItem; // Binary search tree data item BSTreeNode *left, // Pointer to the left child *right; // Pointer to the right child };

// Recursive helpers for the public member functions -- insert // prototypes of these functions here. void insertHelper(BSTreeNode *&p, const DataType &newDataItem); bool retrieveHelper(BSTreeNode *p, const KeyType& searchKey, DataType &searchDataItem) const; bool removeHelper(BSTreeNode *&p, const KeyType& deleteKey); // cutRightmose used in one implementation of remove. void cutRightmost(BSTreeNode *&r, BSTreeNode *&delPtr); void writeKeysHelper(BSTreeNode *p) const; void clearHelper(BSTreeNode *p); void showHelper(BSTreeNode *p, int level) const; int getHeightHelper(BSTreeNode *p) const; int getCountHelper(BSTreeNode *p) const; void writeLTHelper(BSTreeNode *p, const KeyType& searchKey) const; void copyTree(const BSTree &otherTree); void copyTreeHelper(BSTreeNode *&p, const BSTreeNode *otherPtr);

// Data member BSTreeNode *root; // Pointer to the root node };

#endif // define BSTREE_H

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Transactions On Large Scale Data And Knowledge Centered Systems Vi Special Issue On Database And Expert Systems Applications Lncs 7600

Authors: Abdelkader Hameurlain ,Josef Kung ,Roland Wagner ,Stephen W. Liddle ,Klaus-Dieter Schewe ,Xiaofang Zhou

2012th Edition

3642341780, 978-3642341786

More Books

Students also viewed these Databases questions

Question

How is the NDAA used to shape defense policies indirectly?

Answered: 1 week ago