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
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.