package binaryTree.visitor; import binaryTree.*; import ordering.*; public class OOBSTDeleter implements IVisitor { public final static OOBSTDeleter Singleton = new OOBSTDeleter (); private OOBSTDeleter() { } /** * Returns null. * @param host satisfies Binary Search Tree Property (BSTP). * @param input an IOrdered. * @return */ public Object emptyCase(BiTree host, Object input) { return null; } /** * Returns input if host contains input, otherwise returns null. * @param host satifies BST property * @param input an IOrdered. */ public Object nonEmptyCase(BiTree host, Object input) { IOrdered root = (IOrdered)host.getRootDat(); IOrdered inp = (IOrdered)input; int inpCompRoot = inp.compare (root); if (inpCompRoot == IOrdered.LESS) { return host.getLeftSubTree().execute(this, input); } else if (inpCompRoot == IOrdered.GREATER) { return host.getRightSubTree().execute(this, input); } else { host.getLeftSubTree().execute(LeftDeleter.Singleton, host); return input; } } }