public class ArrayListCompleteBinaryTree<E> extends java.lang.Object implements CompleteBinaryTree<E>
n has rank i,
then the left child of n will have rank 2*i,
and the right child of n will have rank 2*i +
1. Traversing the contents of the vector in order of increasing
rank yields a level-order traversalBinaryTree,
CompleteBinaryTree| Constructor and Description |
|---|
ArrayListCompleteBinaryTree()
default constructor
|
| Modifier and Type | Method and Description |
|---|---|
Position<E> |
add(E e)
Adds an element just after the last node (in a level numbering).
|
java.lang.Iterable<Position<E>> |
children(Position<E> v)
Returns an iterable collection of the children of v.
|
boolean |
hasLeft(Position<E> v)
Returns whether v has a left child.
|
boolean |
hasRight(Position<E> v)
Returns whether v has a right child.
|
boolean |
isEmpty()
Returns whether the tree is empty.
|
boolean |
isExternal(Position<E> v)
Returns whether v is an external node.
|
boolean |
isInternal(Position<E> v)
Returns whether v is an internal node.
|
boolean |
isRoot(Position<E> v)
Returns whether v is the root node.
|
java.util.Iterator<E> |
iterator()
Returns an iterator of the elements stored at all nodes in the tree.
|
Position<E> |
left(Position<E> v)
Returns the left child of v.
|
Position<E> |
parent(Position<E> v)
Returns the parent of v.
|
java.lang.Iterable<Position<E>> |
positions()
Returns an iterable collection of all the nodes in the tree.
|
E |
remove()
Removes and returns the element at the last node.
|
E |
replace(Position<E> v,
E o)
Replaces the element at v.
|
Position<E> |
right(Position<E> v)
Returns the right child of v.
|
Position<E> |
root()
Returns the root of the tree.
|
Position<E> |
sibling(Position<E> v)
Returns the sibling of v.
|
int |
size()
Returns the number of (internal and external) nodes.
|
void |
swapElements(Position<E> v,
Position<E> w)
Swaps the elements at two nodes.
|
java.lang.String |
toString()
Returns a String representing this complete binary tree.
|
public ArrayListCompleteBinaryTree()
public Position<E> add(E e)
add in interface CompleteBinaryTree<E>public java.lang.Iterable<Position<E>> children(Position<E> v) throws InvalidPositionException
children in interface Tree<E>InvalidPositionExceptionpublic boolean hasLeft(Position<E> v) throws InvalidPositionException
hasLeft in interface BinaryTree<E>InvalidPositionExceptionpublic boolean hasRight(Position<E> v) throws InvalidPositionException
hasRight in interface BinaryTree<E>InvalidPositionExceptionpublic boolean isEmpty()
public boolean isExternal(Position<E> v) throws InvalidPositionException
isExternal in interface Tree<E>InvalidPositionExceptionpublic boolean isInternal(Position<E> v) throws InvalidPositionException
isInternal in interface Tree<E>InvalidPositionExceptionpublic boolean isRoot(Position<E> v) throws InvalidPositionException
isRoot in interface Tree<E>InvalidPositionExceptionpublic java.util.Iterator<E> iterator()
public Position<E> left(Position<E> v) throws InvalidPositionException, BoundaryViolationException
left in interface BinaryTree<E>InvalidPositionExceptionBoundaryViolationExceptionpublic Position<E> parent(Position<E> v) throws InvalidPositionException, BoundaryViolationException
parent in interface Tree<E>InvalidPositionExceptionBoundaryViolationExceptionpublic java.lang.Iterable<Position<E>> positions()
public E remove() throws EmptyTreeException
remove in interface CompleteBinaryTree<E>EmptyTreeExceptionpublic E replace(Position<E> v, E o) throws InvalidPositionException
replace in interface Tree<E>InvalidPositionExceptionpublic Position<E> right(Position<E> v) throws InvalidPositionException
right in interface BinaryTree<E>InvalidPositionExceptionpublic Position<E> root() throws EmptyTreeException
root in interface Tree<E>EmptyTreeExceptionpublic Position<E> sibling(Position<E> v) throws InvalidPositionException, BoundaryViolationException
public int size()
public void swapElements(Position<E> v, Position<E> w) throws InvalidPositionException
InvalidPositionExceptionpublic java.lang.String toString()
toString in class java.lang.Object