REF 6H Binary Trees by
Dane Henry
import java.util.*;
import java.lang.*;
import java.io.*;
// adding and viewing items in a binary tree
public class menuTest
{
myBST myBST = new myBST();
public menuTest()
{
int choice = menu();
while (choice != 3)
{
switch(choice)
{
case 1: System.out.println("Enter String to be added:");
Scanner inData = new Scanner(System.in);
String nodeData = inData.nextLine();
boolean answer = myBST.add(nodeData);
if (answer = false)
{
System.out.println(nodeData + " was not added to the list.");
}
else
{
System.out.println(nodeData + " was added to the list.");
}
break;
case 2:myBST.callTraversal();
}
choice = menu();
}
System.exit(0);
}
public int menu()
{
System.out.println("1. Add an element \n2. Show all elements \n3.
QUIT");
Scanner in = new Scanner(System.in);
int option = in.nextInt();
return option;
}
public static void main(String[] args)
{
menuTest tt=new menuTest();
}
}
*****************************************************************************************
import java.lang.*;
import java.util.*;
import java.io.*;
// the class that actually does the work on the binary tree
// include documented displays to demonstrate recursion
public class myBST
{
private Node root;
private boolean addReturn;
public Node tempRoot;
private String deleteReturn = null;
private int count;
private static class Node
{
private String data;
private Node left;
private Node right;
private Node(String dataItem)
{
data = dataItem;
left = null;
right = null;
}
}
public myBST()
{
root = null;
}
public boolean add(String aString)
{
count = 0;
root = add(root,aString);
return addReturn;
}
private Node add(Node localRoot, String aString)
{
if(localRoot == null)
{
localRoot = new Node(aString);
return localRoot;
}
if(aString.compareTo(localRoot.data) == 0)
{
System.out.println("CALL 1..." + aString + " " + localRoot.data );
addReturn = false;
System.out.println("RETURN 1..." + aString + " " + localRoot.data );
return localRoot;
}
else if(aString.compareTo(localRoot.data) < 0)
{
System.out.println("CALL 2..." + aString + " " + localRoot.data );
localRoot.left = add(localRoot.left, aString);
System.out.println("RETURN 2..." + aString + " " + localRoot.data );
return localRoot;
}
else
{
System.out.println("CALL 3..." + aString + " " + localRoot.data );
localRoot.right = add(localRoot.right, aString);
System.out.println("RETURN 3..." + aString + " " + localRoot.data );
return localRoot;
}
}
private void inOrderTraversal(Node currentRoot)
{
Node localNode = currentRoot;
if(localNode == null)
{
return;
}
inOrderTraversal(localNode.left);
System.out.println(localNode.data);
inOrderTraversal(localNode.right);
}
public void callTraversal()
{
this.inOrderTraversal(root);
}
}