public class TreeTest
{ public static void main(String[] args)
{ Tree staff = new Tree();
staff.insert("Romeo");
staff.insert("Juliet");
staff.insert("Tom");
staff.insert("Dick");
staff.insert("Harry");
staff.print();
}
}
/**
This class implements a binary search tree whose
nodes hold objects that implement the Comparable
interface.
*/
class Tree
{ /**
Constructs an empty tree.
*/
public Tree()
{ root = null;
}
/**
Inserts a new node into the tree.
@param obj the object to insert
*/
public void insert(Comparable obj)
{ Node newNode = new Node();
newNode.data = obj;
newNode.left = null;
newNode.right = null;
if (root == null) root = newNode;
else root.insertNode(newNode);
}
/**
Prints the contents of the tree in sorted order.
*/
public void print()
{ if (root != null)
root.printNodes();
}
private Node root;
private class Node
{ /**
Inserts a new node as a descendant of this node.
@param newNode the node to insert
*/
public void insertNode(Node newNode)
{ if (newNode.data.compareTo(data) < 0)
{ if (left == null) left = newNode;
else left.insertNode(newNode);
}
else
{ if (right == null) right = newNode;
else right.insertNode(newNode);
}
}
/**
Prints this node and all of its descendants
in sorted order.
*/
public void printNodes()
{ if (left != null)
left.printNodes();
System.out.println(data);
if (right != null)
right.printNodes();
}
public Comparable data;
public Node left;
public Node right;
}
}