Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Templating means that instead of passing a parameter such as Integer you pass a

ID: 3547411 • Letter: T

Question

Templating means that instead of passing a parameter such as Integer you pass a parameter T. (T is a type variable and can be named anything).  This means that you can call bsearch with different types of objects.  

Pseudo Code Example:

Bsearch(String)  Bsearch(Integer)

This means you do not have to write 2 separate bsearch methods, one for String and one for Integer.  

The heart of how this  is accomplished is the Comparable interface. If a class implements Comparable, it defines less than, greater than and equals. Also, by making the type variable you can call with any object that implements Comparable.

Example Code:

public class Searches

{

public static <T extends Comparable> int bsearch(T[] a, int first, int last, T key)

{

called in main as:

result = Searches.<Integer>bsearch(IntegerArray,0, 10, key);

result = Searches<String>bsearch(StringArray,0,10,key);

Example Output:

--------------------Configuration: <Default>--------------------

Integer test array contains:

0 2 4 6 8 10 12 14 16 18

-3 is not in the array.

-2 is not in the array.

-1 is not in the array.

0 is at index 0

1 is not in the array.

2 is at index 1

3 is not in the array.

4 is at index 2

String test array contains:

apples oranges peaches strawberries watermelons

apples is at index 0

plums is not in the array.

Process completed.

Templating means that instead of passing a parameter such as Integer you pass a parameter T. (T is a type variable and can be named anything). This means that you can call bsearch with different types of objects.

Explanation / Answer

#include <iostream>

#include <algorithm>

using namespace std;


struct BinaryTree {

int data;

BinaryTree* left;

BinaryTree* right;

};


BinaryTree* maketree (int data, BinaryTree* left = 0, BinaryTree* right = 0) {

BinaryTree* temp = new BinaryTree;

temp->data = data;

temp->left = left;

temp->right = right;

return temp;

}


bool BinarySearchTree(BinaryTree* tree,int data){

if ( tree==0 ){

return false;

}

else if ( tree->data==data ){

return true;

}

else if ( tree->data > data ){

return BinarySearchTree(tree->left,data);

}

else if ( tree->data < data ){

return BinarySearchTree(tree->right,data);

}

}


int main() {

BinaryTree* my_tree5=maketree(5,maketree(6,maketree(8,maketree(10),maketree(100))));   

cout << BinarySearchTree(my_tree5,int 6) << endl; // returns 1 if true and 0 otherwise

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote