heap - inizio

This commit is contained in:
2014-05-05 00:09:25 +02:00
parent 4f68dd31d1
commit 5d90623636
2 changed files with 169 additions and 0 deletions

View File

@@ -0,0 +1,151 @@
package tree.binarytree.heap;
import arraylist.IndexList;
import exceptions.BoundaryViolationException;
import exceptions.EmptyTreeException;
import exceptions.InvalidPositionException;
import position.Position;
import java.util.Iterator;
/**
* Created with xgiovio.macbookair.
* User: xgiovio
* Date: 28/04/14
* Time: 15:15
*/
public class ArrayListCompleteBinaryTree<E> implements CompleteBinaryTree<E> {
IndexList<BTPos<E>> T;
public E remove() throws EmptyTreeException {
if(isEmpty()) throw new EmptyTreeException("Lalbero è vuoto");
return T.remove(size()).element();
}
public Position<E> add(E e) {
int i = size() + 1;
BTPos<E> p = new BTPos<E>(e,i);
T.add(i, p);
return p;
}
@Override
public int size() {
return T.size() -1;
}
@Override
public boolean isEmpty() {
return (size() == 0);
}
@Override
public Position<E> left(Position<E> v) throws InvalidPositionException, BoundaryViolationException {
return null;
}
@Override
public Position<E> right(Position<E> v) throws InvalidPositionException, BoundaryViolationException {
return null;
}
@Override
public boolean hasLeft(Position<E> v) throws InvalidPositionException {
return false;
}
@Override
public boolean hasRight(Position<E> v) throws InvalidPositionException {
return false;
}
@Override
public Iterable<Position<E>> positions() {
return null;
}
@Override
public E replace(Position<E> v, E e) throws InvalidPositionException {
return null;
}
@Override
public Position<E> root() throws EmptyTreeException {
return null;
}
@Override
public Position<E> parent(Position<E> v) throws InvalidPositionException, BoundaryViolationException {
return null;
}
@Override
public Iterable<Position<E>> children(Position<E> v) throws InvalidPositionException {
return null;
}
@Override
public boolean isInternal(Position<E> v) throws InvalidPositionException {
return false;
}
@Override
public boolean isExternal(Position<E> v) throws InvalidPositionException {
return false;
}
@Override
public boolean isRoot(Position<E> v) throws InvalidPositionException {
return false;
}
@Override
public Iterator<E> iterator() {
return null;
}
// check position
protected BTPos<E>checkPosition(Position<E> v) throws InvalidPositionException
{
if (v == null || !(v instanceof BTPos))
throw new InvalidPositionException("La posizione non è valida");
return (BTPos<E>) v;
}
// internal class
protected static class BTPos<E> implements Position<E> {
E element; int index;
public BTPos(E elt, int i) {
element = elt;
index = i;
}
public E element() { return element; }
public int index() { return index; }
public E setElement(E elt) {
E temp = element;
element = elt;
return temp; }
}
}

View File

@@ -0,0 +1,18 @@
package tree.binarytree.heap;
import position.Position;
import tree.binarytree.BinaryTree;
/**
* Created with xgiovio.macbookair.
* User: xgiovio
* Date: 28/04/14
* Time: 15:12
*/
public interface CompleteBinaryTree <E> extends BinaryTree<E>
{
public Position<E> add(E elem);
public E remove();
}