© 1998-2002 McGraw-Hill

structure
Class BinarySearchTree

java.lang.Object
  |
  +--structure.AbstractStructure
        |
        +--structure.BinarySearchTree
All Implemented Interfaces:
OrderedStructure, Structure
Direct Known Subclasses:
SplayTree

public class BinarySearchTree
extends AbstractStructure
implements OrderedStructure

A binary search tree structure. This structure maintains data in an ordered tree. It does not keep the tree balanced, so performance may degrade if the tree height is not optimal.

Example usage:

To create a Binary search tree containing the months of the year and to print out this tree as it grows we could use the following.

 public static void main(String[] argv){
     BinarySearchTree test = new BinarySearchTree();
       
     //declare an array of months
     String[] months = new String[]{"March", "May", "November", "August", 
      			      "April", "January", "December", "July",
				      "February", "June", "October", "September"};
      
     //add the months to the tree and print out the tree as it grows
     for(int i=0; i < months.length; i++){
        test.add(months[i]);
        System.out.println("Adding: " + months[i] + "\n" +test.treeString());
      }
  }
 

See Also:
SplayTree, BinaryTree

Field Summary
protected  int count
          The number of nodes in the tree
protected  Comparator ordering
          The ordering used on this search tree.
protected  BinaryTree root
          A reference to the root of the tree
 
Constructor Summary
BinarySearchTree()
          Constructs a binary search tree with no data
BinarySearchTree(Comparator alternateOrder)
          Constructs a binary search tree with no data
 
Method Summary
 void add(Object value)
          Add a (possibly duplicate) value to binary search tree
 void clear()
          Removes all data from the binary search tree
 boolean contains(Object value)
          Determines if the binary search tree contains a value
 Object get(Object value)
          Returns reference to value found within three.
 int hashCode()
          Returns the hashCode of the value stored by this object.
 boolean isEmpty()
          Checks for an empty binary search tree
 Iterator iterator()
          Returns an iterator over the binary search tree.
protected  BinaryTree locate(BinaryTree root, Object value)
           
protected  BinaryTree predecessor(BinaryTree root)
           
 Object remove(Object value)
          Remove an value "equals to" the indicated value.
protected  BinaryTree removeTop(BinaryTree topNode)
          Removes the top node of the tree rooted, performs the necissary rotations to reconnect the tree.
 int size()
          Determines the number of data values within the tree
protected  BinaryTree successor(BinaryTree root)
           
 String toString()
          Returns a string representing tree
 String treeString()
          Returns a (possibly long) string representing tree.
 
Methods inherited from class structure.AbstractStructure
elements, values
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, notify, notifyAll, registerNatives, wait, wait, wait
 
Methods inherited from interface structure.Structure
elements, values
 

Field Detail

root

protected BinaryTree root
A reference to the root of the tree

count

protected int count
The number of nodes in the tree

ordering

protected Comparator ordering
The ordering used on this search tree.
Constructor Detail

BinarySearchTree

public BinarySearchTree()
Constructs a binary search tree with no data

BinarySearchTree

public BinarySearchTree(Comparator alternateOrder)
Constructs a binary search tree with no data
Method Detail

isEmpty

public boolean isEmpty()
Checks for an empty binary search tree
Specified by:
isEmpty in interface Structure
Overrides:
isEmpty in class AbstractStructure
Postcondition:
Returns true iff the binary search tree is empty
Returns:
True iff the tree contains no data

clear

public void clear()
Removes all data from the binary search tree
Specified by:
clear in interface Structure
Postcondition:
Removes all elements from binary search tree

size

public int size()
Determines the number of data values within the tree
Specified by:
size in interface Structure
Postcondition:
Returns the number of elements in binary search tree
Returns:
The number of nodes in the binary search tree

locate

protected BinaryTree locate(BinaryTree root,
                            Object value)
Precondition:
root and value are non-null
Postcondition:
returned: 1 - existing tree node with the desired value, or 2 - the node to which value should be added

predecessor

protected BinaryTree predecessor(BinaryTree root)

successor

protected BinaryTree successor(BinaryTree root)

add

public void add(Object value)
Add a (possibly duplicate) value to binary search tree
Specified by:
add in interface Structure
Parameters:
val - A reference to non-null object
Postcondition:
Adds a value to binary search tree

contains

public boolean contains(Object value)
Determines if the binary search tree contains a value
Specified by:
contains in interface Structure
Overrides:
contains in class AbstractStructure
Parameters:
val - The value sought. Should be non-null
Postcondition:
Returns true iff val is a value found within the tree
Returns:
True iff the tree contains a value "equals to" sought value

get

public Object get(Object value)
Returns reference to value found within three. This method can be potentially dangerous if returned value is modified: if modification would change the relation of value to others within the tree, the consistency of the structure is lost Don't modify returned value
Parameters:
val - Value sought from within tree
Postcondition:
Returns object found in tree, or null
Returns:
A value "equals to" value sought; otherwise null

remove

public Object remove(Object value)
Remove an value "equals to" the indicated value. Only one value is removed, and no guarantee is made concerning which of duplicate values are removed. Value returned is no longer part of the structure
Specified by:
remove in interface Structure
Parameters:
val - Value sought to be removed from tree
Postcondition:
Removes one instance of val, if found
Returns:
Actual value removed from tree

removeTop

protected BinaryTree removeTop(BinaryTree topNode)
Removes the top node of the tree rooted, performs the necissary rotations to reconnect the tree.
Parameters:
topNode - Contains the value we want to remove
Precondition:
topNode contains the value we want to remove
Postcondition:
We return an binary tree rooted with the predecessor of topnode.
Returns:
The root of a new binary tree containing all of topNodes descendents and rooted at topNode's predecessor

iterator

public Iterator iterator()
Returns an iterator over the binary search tree. Iterator should not be used if tree is modified, as behavior may be unpredicatable Traverses elements using in-order traversal order
Specified by:
iterator in interface Structure
Postcondition:
Returns iterator to traverse BST
Returns:
An iterator over binary search tree

hashCode

public int hashCode()
Returns the hashCode of the value stored by this object.
Overrides:
hashCode in class AbstractStructure
Returns:
The hashCode of the value stored by this object.

treeString

public String treeString()
Returns a (possibly long) string representing tree. Differs from toString() in that toString() outputs a single line representation of the contents of the tree. treeString, however, prints out a graphical representations of the tree's structure.
Postcondition:
Generates a string representation of the AVLST
Returns:
String representation of tree

toString

public String toString()
Returns a string representing tree
Overrides:
toString in class Object
Postcondition:
Generates a string representation of the BST
Returns:
String representation of tree

© 1998-2002 McGraw-Hill