// BinaryTree.h
#include <iostream>
using namespace std;
// Definition of the Node
template <class elemType>
struct TreeNode
{
elemType data;
TreeNode<elemType> *left;
TreeNode<elemType> *right;
};
// Definition of Binary Tree
template <class elemType>
class BinaryTree
{
protected:
TreeNode<elemType> *root;
public:
BinaryTree();
BinaryTree(const BinaryTree<elemType>
&otherTree);
~BinaryTree();
bool isEmpty() const;
virtual bool search(const elemType& searchItem)
const = 0;
virtual void insert(const elemType& insertItem) =
0;
virtual void deleteNode(const elemType&
deleteItem) = 0;
private:
int height(TreeNode<elemType> *p) const;
int nodeCount(TreeNode<elemType> *p)
const;
int leafCount(TreeNode<elemType> *p)
const;
};
//end of BinaryTree.h
// BinarySearchTree.h
#include "BinaryTree.h"
using namespace std;
template <class elemType>
class BinarySearchTree : public BinaryTree<elemType>
{
public:
bool search(const elemType& searchItem)
const;
void insert(const elemType& insertItem);
void deleteNode(const elemType& deleteItem);
TreeNode<elemType> * getTreeMin() const; //
member function that returns a pointer to the node with the
smallest value
private:
void displayAscending(TreeNode<elemType> *p)
const;
TreeNode<elemType> *
getTreeMax(TreeNode<elemType> *p) const;
TreeNode<elemType> *
getTreeMin(TreeNode<elemType> *p) const;
};
// function to return the pointer to the node with the smallest
value in the tree
template <class elemType>
TreeNode<elemType>* BinarySearchTree<elemType>::
getTreeMin() const
{
// can directly access root as it is protected member
of the base class
return getTreeMin(root); // call the helper function
getTreeMin with root as the parameter
}
// helper function to return the pointer to the node with smallest
value starting from node p
// Since it is a BinarySearchTree, hence the smallest value is the
leftmost node of the tree
template <class elemType>
TreeNode<elemType>*
BinarySearchTree<elemType>::getTreeMin(TreeNode<elemType>
*p) const
{
// if p is null, return null
if(p == NULL)
return NULL;
else if(p->left == NULL) // if p is the left most
node of the tree return p
return p;
else
return getTreeMin(p->left); //
call getTreeMin with left node of p
}
//end of BinarySearchTree.h
Consider the class specifications for the Binary Tree class and BinarySearch Tree class below: // Binary...
Consider the class specifications for the Binary Tree class and Binary Search Tree class in the attached files // BinaryTree.h #include <iostream> using namespace std; //Definition of the Node template <class elemType> struct TreeNode { elemType data; TreeNode<elemType> *left; TreeNode<elemType> *right; }; //Definition of class Binary Tree template <class elemType> class BinaryTree { protected: TreeNode<elemType> *root; public: BinaryTree(); BinaryTreel const BinaryTree<elemType>& otherTree); BinaryTree(); bool is Empty() const; virtual boot search(const elemType& searchItem) const = 0; virtual void insert(const elemType& insertItem)...
Write a function, swapSubtrees, that swaps all of the left and right subtrees of a binary tree. Add this function to the class binaryTreeType and create a program to test this function. #include <iostream> using namespace std; //Definition of the Node template <class elemType> struct nodeType { elemType info; nodeType<elemType> *lLink; nodeType<elemType> *rLink; }; //Definition of the class template <class elemType> class binaryTreeType { public: //Overload the assignment operator. const binaryTreeType<elemType>& operator=(const binaryTreeType<elemType>&) { if (this != &otherTree) //avoid self-copy...
Binary Tree Template Write your own version of a class template that will create a binary tree that can hold values of any data type. Demonstrate the class with a driver program. Place your binary tree template in it's own header file, Btree.h. Include methods for the following: inserting new values into the tree removing nodes from the tree searching the tree returning the number of nodes in the tree displaying the contents of the tree using preorder traversal Your...
This project is divided into 3 parts: Part 1. Create a new project and download the arrayList and unorderedArrayList templates that are attached. Create a header file for your unorderedSet template and add it to the project. An implementation file will not be needed since the the new class will be a template. Override the definitions of insertAt, insertEnd, and replaceAt in the unorderedSet template definition. Implement the template member functions so that all they do is verify that the...
3. (Gaddis Exercises 20.4) Tree Height Write a recursive member function for the BinaryTree class that returns the height of the tree. The height of the tree is the number of levels it contains. Demonstrate the function in a driver program. CPP FILE CODE: #include "BinaryTree.h" #include <iostream> using namespace std; BinaryTree::BinaryTree() { root = NULL; } BinaryTree::~BinaryTree() { destroy(root); } bool BinaryTree::search(int data) { return search(data, root); } void BinaryTree::insert(int data) { insert(data, root); } void BinaryTree::traverseInOrder() { traverseInOrder(root);...
Hi there, I am working on a binary search tree code in c++. The program must store and update students' academic records, each node includes the student name, credits attempted, credits earned and GPA. I have made some progress with the code and written most of the functions in the .cpp file (already did the .h file) but i am struggling with what to put in the main and how to put an update part in the insert function. I...
Given the following code: #ifndef TREE_H #define TREE_H #include <iostream> #include "TreeNode.h" template< typename NODETYPE > class Tree { public: Tree() : rootPtr( nullptr ) {} void insertNode( const NODETYPE &value ) { insertNodeHelper( &rootPtr, value ); } void preOrderTraversal() const { preOrderHelper( rootPtr ); } void inOrderTraversal() const { inOrderHelper( rootPtr ); } private: TreeNode< NODETYPE > *rootPtr; void insertNodeHelper( TreeNode< NODETYPE > **ptr, const NODETYPE &value ) { if ( *ptr == nullptr ) * ptr = new...
C++ (Using Binary Search Trees) other methods will result in downvote Implement the binary search tree methods (bst.cpp) for the binary search tree provided in the header file. Test your implementation with the included test. bst.h bst_test.cpp Note: Your implementation must correspond to declarations in the header file, and pass the test. Do not modify these two. I will compile your code against these. If the compilation fails, you will get down vote. bst.h #ifndef BINARY_SEARCH_TREE_H #define BINARY_SEARCH_TREE_H #include <string>...
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 <typename DataType, class KeyType> BSTree<DataType, KeyType>::BSTreeNode::BSTreeNode ( const DataType &nodeDataItem, BSTreeNode *leftPtr, BSTreeNode *rightPtr ) { } template < typename DataType, class KeyType > BSTree<DataType, KeyType>::BSTree () { root = 0; } template...
I need to do a tree sort method but the treesortMethod is not working /****Binarytree class****\ package Tree; public class BinaryTree { private TreeNode root; // head of the list //constructor - create an empty binary tree public BinaryTree() { root = null; } //isEmpty() - return true if tree is empty, false otherwise public boolean isEmpty() { return (root == null); } //deleteTree() - remove all items from tree public void deleteList() { root =...