package brs; /** * Represents the empty state of a BiTree. Uses the singleton pattern to model * the uniqueness of "emptiness". * @author Dung X. Nguyen - Copyright 2002 - All rights reserved. * @since 03/11/02 */ class EmptyNode extends ANode { final static EmptyNode Singleton = new EmptyNode (); private EmptyNode (){ } /** * Throws java.util.NoSuchElementException. * @param owner the BiTree holding this EmptyNode. */ Object getRootDat (BiTree owner) { throw new java.util.NoSuchElementException ("EmptyNode.getRootDat()"); } /** * Throws java.util.NoSuchElementException. * @param dat a data Object. * @param owner the BiTree holding this EmptyNode. */ void setRootDat (Object dat, BiTree owner) { throw new java.util.NoSuchElementException ("EmptyNode.setRootDat()"); } /** * Throws java.util.NoSuchElementException. * @param owner the BiTree holding this EmptyNode. */ BiTree getLeftSubTree (BiTree owner) { throw new java.util.NoSuchElementException ("EmptyNode.getLeftSubTree()"); } /** * Throws java.util.NoSuchElementException. * @param owner the BiTree holding this EmptyNode. */ BiTree getRightSubTree(BiTree owner) { throw new java.util.NoSuchElementException ("EmptyNode.getRightSubTree()"); } /** * Throws java.util.NoSuchElementException. * @param biTree a given BiTree. * @param owner the BiTree holding this EmptyNode. */ void setLeftSubTree(BiTree biTree, BiTree owner) { throw new java.util.NoSuchElementException ("EmptyNode.setLeftSubTree()"); } /** * Throws java.util.NoSuchElementException. * @param biTree a given BiTree. * @param owner the BiTree holding this EmptyNode. */ void setRightSubTree(BiTree biTree, BiTree owner) { throw new java.util.NoSuchElementException ("EmptyNode.setRightSubTree()"); } /** * Asks the owner tree to set the root node to a new DatNode containing dat, * resulting in a state change from empty to non-empty. * @param dat a given data Object. * @param owner the context of this state. */ void insertRoot(Object dat, BiTree owner) { owner.setRootNode(new DatNode(dat)); } /** * Throws java.util.NoSuchElementException. * @param owner the BiTree holding this EmptyNode. */ Object remRoot (BiTree owner) { throw new java.util.NoSuchElementException ("EmptyNode.remRoot()"); } /** * Calls algo's emptyCase () method to execute the algorithm algo. * @param algo the visiting algorithm * @param inp the input algo needs. * @param owner the BiTree holding this EmptyNode. * @return the output for the emptyCase() of algo. */ Object execute(IVisitor algo, Object inp, BiTree owner) { return algo.emptyCase(owner, inp); } }