/** Realization of a dictionary by means of a binary search tree */
public class BinarySearchTree implements Dictionary {
Comparator C; // comparator
BinaryTree T; // binary tree
protected Position actionPos; // insertion position or parent of removed position
public BinarySearchTree(Comparator c) {
C = c;
T = (BinaryTree) new NodeBinaryTree();
}
// auxiliary methods:
/** Extract the key of the item at a given node of the tree. */
protected Object key(Position position) {
return ((Item) position.element()).key();
}
/** Extract the element of the item at a given node of the tree. */
protected Object element(Position position) {
return ((Item) position.element()).element();
}
/** Check whether a given key is valid. */
protected void checkKey(Object key) throws InvalidKeyException {
if(!C.isComparable(key))
throw new InvalidKeyException("Key "+key+" is not comparable");
}