package binary_search_tree;

import java.util.NoSuchElementException;
import binary_search_tree.Bst;	// My implementation of Binary Search Tree in package binary_search_tree

/*
	Class to test class Bst. (Binary Search Tree)
*/

class TestBst{

			

	// Tests Insertion and traversals
	public static void testInsertion(){

		// Create a bst object
		Bst bst = new Bst();

		// Test Pre Order when tree is empty. Should throw exception
		try{
			bst.inOrder();
		}
		catch(NoSuchElementException e){
			System.out.println(e);
		}


		// Test Pre Order when tree is empty. Should throw exception
		try{
			bst.preOrder();
		}
		catch(NoSuchElementException e){
			System.out.println(e);
		}


		// Test Post Order when tree is empty. Should throw exception
		try{
			bst.postOrder();
		}
		catch(NoSuchElementException e){
			System.out.println(e);
		}


		// Test Level Order when tree is empty. Should throw exception
		try{
			bst.levelOrder();
		}
		catch(NoSuchElementException e){
			System.out.println(e);
		}


		// Create array of integers to insert
		int[] values = {10, 7, 9, 8, 2, 15, 13, 17};
		

		// Insert values into bst
		for(int v: values){
			bst.insert(v);
		}

		// Print In Order traversal
		System.out.print("In order Traversal:\t ");
		bst.inOrder();

		System.out.println();
		System.out.println("Should be:\t\t 2 7 8 9 10 13 15 17");


		// Print Pre Order traversal
		System.out.print("Pre order Traversal:\t ");
		bst.preOrder();

		System.out.println();
		System.out.println("Should be:\t\t 10 7 2 9 8 15 13 17");


		// Print Post Order traversal
		System.out.print("Post order Traversal:\t ");
		bst.postOrder();

		System.out.println();
		System.out.println("Should be:\t\t 2 8 9 7 13 17 15 10");


		// Print Level Order traversal
		System.out.print("Level order Traversal:\t ");
		bst.levelOrder();

		System.out.println();
		System.out.println("Should be:\t\t 10 7 15 2 9 13 17 8");

	}




	public static void main(String args[]){

		// Test Insertion
		testInsertion();
	}

}

@@ -167,16 +167,115 @@
 ch_tree%0A
+import binary_search_tree.Node;%09// My implementation of Node for BST in package binary_search_tree.
 %0A/*%0A%09Cla
@@ -2015,16 +2015,830 @@
 ;%0A%0A%09%7D%0A%0A%0A
+%09// Tests Search%0A%0A%09public static void testSearch()%7B%0A%0A%09%09// Create a bst object%0A%09%09Bst bst = new Bst();%0A%0A%0A%09%09// Test search on empty tree. Should throw exception%0A%09%09try%7B%0A%0A%09%09%09bst.search(10);%09%0A%09%09%7D%0A%09%09catch(NoSuchElementException e)%7B%0A%0A%09%09%09System.out.println(e);%0A%09%09%7D%0A%0A%0A%09%09// Create array of integers to insert%0A%09%09int%5B%5D values = %7B10, 7, 9, 8, 2, 15, 13, 17%7D;%0A%09%09%0A%0A%09%09// Insert values into bst%0A%09%09for(int v: values)%7B%0A%09%09%09bst.insert(v);%0A%09%09%7D%0A%0A%09%09// Create array of keys to search%0A%09%09int%5B%5D searchKeys = %7B10,7,15,2,9,13,17,8,1,19,12,5%7D;%0A%0A%09%09// Search for each key in bst%0A%09%09for(int s: searchKeys)%7B%0A%0A%09%09%09Node n = bst.search(s);%0A%0A%09%09%09// Print message based on whether search is successful or unsuccessful.%0A%09%09%09if(n!=null)%0A%09%09%09%09System.out.println(s+%22 Found! Node contents: %22+n.getValue());%0A%09%09%09else%0A%09%09%09%09System.out.println(s+%22 Not Found!%22);%0A%09%09%7D%0A%0A%0A%0A%09%7D
 %0A%0A%09publi
@@ -2911,15 +2911,49 @@
 rtion();
+%0A%0A%09%09// Test Search%0A%09%09testSearch();
 %0A%09%7D%0A%0A%7D%0A

Add test Case for search