diff --git a/tree/binarytree/heap/ArrayListCompleteBinaryTree.java b/tree/binarytree/heap/ArrayListCompleteBinaryTree.java new file mode 100644 index 0000000..20429c7 --- /dev/null +++ b/tree/binarytree/heap/ArrayListCompleteBinaryTree.java @@ -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 implements CompleteBinaryTree { + + IndexList> T; + + public E remove() throws EmptyTreeException { + if(isEmpty()) throw new EmptyTreeException("L’albero è vuoto"); + return T.remove(size()).element(); + } + + public Position add(E e) { + int i = size() + 1; + BTPos p = new BTPos(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 left(Position v) throws InvalidPositionException, BoundaryViolationException { + return null; + } + + @Override + public Position right(Position v) throws InvalidPositionException, BoundaryViolationException { + return null; + } + + @Override + public boolean hasLeft(Position v) throws InvalidPositionException { + return false; + } + + @Override + public boolean hasRight(Position v) throws InvalidPositionException { + return false; + } + + @Override + public Iterable> positions() { + return null; + } + + @Override + public E replace(Position v, E e) throws InvalidPositionException { + return null; + } + + @Override + public Position root() throws EmptyTreeException { + return null; + } + + @Override + public Position parent(Position v) throws InvalidPositionException, BoundaryViolationException { + return null; + } + + @Override + public Iterable> children(Position v) throws InvalidPositionException { + return null; + } + + @Override + public boolean isInternal(Position v) throws InvalidPositionException { + return false; + } + + @Override + public boolean isExternal(Position v) throws InvalidPositionException { + return false; + } + + @Override + public boolean isRoot(Position v) throws InvalidPositionException { + return false; + } + + @Override + public Iterator iterator() { + return null; + } + + + + + + + + + + // check position + protected BTPoscheckPosition(Position v) throws InvalidPositionException + { + if (v == null || !(v instanceof BTPos)) + throw new InvalidPositionException("La posizione non è valida"); + return (BTPos) v; + } + + + // internal class + protected static class BTPos implements Position { + 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; } + } + + +} diff --git a/tree/binarytree/heap/CompleteBinaryTree.java b/tree/binarytree/heap/CompleteBinaryTree.java new file mode 100644 index 0000000..c60b125 --- /dev/null +++ b/tree/binarytree/heap/CompleteBinaryTree.java @@ -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 extends BinaryTree +{ + public Position add(E elem); + public E remove(); +}