| 
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectnet.datastructures.LinkedBinaryTree<E>
public class LinkedBinaryTree<E>
An implementation of the BinaryTree interface by means of a linked structure.
 This class serves as a superclass for the BinarySearchTree implementation.
 This design decision was made to emphasize the conceptual relationship that a
 BinarySearchTree is a specialized LinkedBinaryTree. An unwanted side-effect
 of this is that the size method returns the number of total
 nodes whereas the size method in the
 BinarySearchTree class returns the number of
 internal nodes only. For this reason, the the size variable
 instead of the size method is used within this class.
BinaryTree| Constructor Summary | |
|---|---|
LinkedBinaryTree()
Creates an empty binary tree.  | 
|
| Method Summary | |
|---|---|
 Position<E> | 
addRoot(E e)
Adds a root node to an empty tree  | 
 void | 
attach(Position<E> v,
       BinaryTree<E> T1,
       BinaryTree<E> T2)
Attaches two trees to be subtrees of an external node.  | 
 java.lang.Iterable<Position<E>> | 
children(Position<E> v)
Returns an iterable collection of the children of a node.  | 
 void | 
expandExternal(Position<E> v,
               E l,
               E r)
Expand an external node into an internal node with two external node children  | 
 boolean | 
hasLeft(Position<E> v)
Returns whether a node has a left child.  | 
 boolean | 
hasRight(Position<E> v)
Returns whether a node has a right child.  | 
 Position<E> | 
insertLeft(Position<E> v,
           E e)
Inserts a left child at a given node.  | 
 Position<E> | 
insertRight(Position<E> v,
            E e)
Inserts a right child at a given node.  | 
 boolean | 
isEmpty()
Returns whether the tree is empty.  | 
 boolean | 
isExternal(Position<E> v)
Returns whether a node is external.  | 
 boolean | 
isInternal(Position<E> v)
Returns whether a node is internal.  | 
 boolean | 
isRoot(Position<E> v)
Returns whether a node is the root.  | 
 java.util.Iterator<E> | 
iterator()
Returns an iterator of the elements stored at the nodes  | 
 Position<E> | 
left(Position<E> v)
Returns the left child of a node.  | 
 Position<E> | 
parent(Position<E> v)
Returns the parent of a node.  | 
 java.lang.Iterable<Position<E>> | 
positions()
Returns an iterable collection of the tree nodes.  | 
 E | 
remove(Position<E> v)
Removes a node with zero or one child.  | 
 void | 
removeAboveExternal(Position<E> v)
Remove an external node v and replace its parent with v's sibling  | 
 E | 
replace(Position<E> v,
        E o)
Replaces the element at a node.  | 
 Position<E> | 
right(Position<E> v)
Returns the right child of a node.  | 
 Position<E> | 
root()
Returns the root of the tree.  | 
 Position<E> | 
sibling(Position<E> v)
Return the sibling of a node  | 
 int | 
size()
Returns the number of nodes in the tree.  | 
 void | 
swapElements(Position<E> v,
             Position<E> w)
Swap the elements at two nodes  | 
| Methods inherited from class java.lang.Object | 
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Constructor Detail | 
|---|
public LinkedBinaryTree()
| Method Detail | 
|---|
public int size()
size in interface Tree<E>public boolean isEmpty()
isEmpty in interface Tree<E>
public boolean isInternal(Position<E> v)
                   throws InvalidPositionException
isInternal in interface Tree<E>InvalidPositionException
public boolean isExternal(Position<E> v)
                   throws InvalidPositionException
isExternal in interface Tree<E>InvalidPositionException
public boolean isRoot(Position<E> v)
               throws InvalidPositionException
isRoot in interface Tree<E>InvalidPositionException
public boolean hasLeft(Position<E> v)
                throws InvalidPositionException
hasLeft in interface BinaryTree<E>InvalidPositionException
public boolean hasRight(Position<E> v)
                 throws InvalidPositionException
hasRight in interface BinaryTree<E>InvalidPositionException
public Position<E> root()
                 throws EmptyTreeException
root in interface Tree<E>EmptyTreeException
public Position<E> left(Position<E> v)
                 throws InvalidPositionException,
                        BoundaryViolationException
left in interface BinaryTree<E>InvalidPositionException
BoundaryViolationException
public Position<E> right(Position<E> v)
                  throws InvalidPositionException,
                         BoundaryViolationException
right in interface BinaryTree<E>InvalidPositionException
BoundaryViolationException
public Position<E> parent(Position<E> v)
                   throws InvalidPositionException,
                          BoundaryViolationException
parent in interface Tree<E>InvalidPositionException
BoundaryViolationException
public java.lang.Iterable<Position<E>> children(Position<E> v)
                                         throws InvalidPositionException
children in interface Tree<E>InvalidPositionExceptionpublic java.lang.Iterable<Position<E>> positions()
positions in interface Tree<E>public java.util.Iterator<E> iterator()
iterator in interface Tree<E>
public E replace(Position<E> v,
                 E o)
          throws InvalidPositionException
replace in interface Tree<E>InvalidPositionException
public Position<E> sibling(Position<E> v)
                    throws InvalidPositionException,
                           BoundaryViolationException
InvalidPositionException
BoundaryViolationException
public Position<E> addRoot(E e)
                    throws NonEmptyTreeException
NonEmptyTreeException
public Position<E> insertLeft(Position<E> v,
                              E e)
                       throws InvalidPositionException
InvalidPositionException
public Position<E> insertRight(Position<E> v,
                               E e)
                        throws InvalidPositionException
InvalidPositionException
public E remove(Position<E> v)
         throws InvalidPositionException
InvalidPositionException
public void attach(Position<E> v,
                   BinaryTree<E> T1,
                   BinaryTree<E> T2)
            throws InvalidPositionException
InvalidPositionException
public void swapElements(Position<E> v,
                         Position<E> w)
                  throws InvalidPositionException
InvalidPositionException
public void expandExternal(Position<E> v,
                           E l,
                           E r)
                    throws InvalidPositionException
InvalidPositionException
public void removeAboveExternal(Position<E> v)
                         throws InvalidPositionException
InvalidPositionException
  | 
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||