BSTFinder.java
Created with JBuilder

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);
    }
}



BSTFinder.java
Created with JBuilder