package brs.visitor; import brs.*; import ordering.*; /** * Finds a data object in a binary host tree that satisfies the * Binary Search Tree Property. * @author Dung X. Nguyen */ public class BSTFinder implements IVisitor { private AOrder _order; public BSTFinder(AOrder order) { _order = order; } /** * Returns null. * @param host an empty binary (which obviously satisfies the * Binary Search Tree Property). * @param input not used */ public Object emptyCase(BiTree host, Object input) { return null; } /** * Returns the tree whose root is equal to input via the ordering order, * otherwise returns null. * @param host non empty and satisfies BSTP. * @param input object to be looked up. * @return null or a BiTree object whose root is equal input (via order). */ public Object nonEmptyCase(BiTree host, Object input) { Object root = host.getRootDat(); if (_order.lt(input, root)) { return host.getLeftSubTree().execute(this, input); } if (_order.eq(input, root)) { return host; } return host.getRightSubTree().execute(this, input); } }