Implementazione parziale di tree

This commit is contained in:
2014-04-07 15:55:11 +02:00
parent 7f3a0bfc24
commit 7fafffa1c5
5 changed files with 198 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
package exceptions;
/**
* Created with MONSTER.
* User: xgiovio
* Date: 05/03/14
* Time: 0.09
*/
public class EmptyTreeException extends RuntimeException {
public EmptyTreeException(){
super("Empty Tree");
}
public EmptyTreeException(String msg){
super(msg);
}
}

73
tree/LinkedTree.java Normal file
View File

@@ -0,0 +1,73 @@
package tree;
import exceptions.BoundaryViolationException;
import exceptions.EmptyTreeException;
import exceptions.InvalidPositionException;
import position.Position;
import java.util.Iterator;
/**
* Created with xgiovio.macbookair.
* User: xgiovio
* Date: 07/04/14
* Time: 15:45
*/
public class LinkedTree <E> implements Tree<E> {
@Override
public int size() {
return 0;
}
@Override
public boolean isEmpty() {
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;
}
}

33
tree/Tree.java Normal file
View File

@@ -0,0 +1,33 @@
package tree;
import exceptions.BoundaryViolationException;
import exceptions.EmptyTreeException;
import exceptions.InvalidPositionException;
import position.Position;
import java.util.Iterator;
/**
* Created with xgiovio.macbookair.
* User: xgiovio
* Date: 07/04/14
* Time: 15:17
*/
public interface Tree<E> extends Iterable<E> {
public int size();
public boolean isEmpty();
public Iterable<Position<E>> positions ();
public E replace (Position<E> v, E e) throws InvalidPositionException;
public Position<E> root () throws EmptyTreeException;
public Position<E> parent (Position <E> v) throws InvalidPositionException, BoundaryViolationException;
public Iterable <Position<E>> children (Position<E> v) throws InvalidPositionException; // anche se e' foglia
public boolean isInternal (Position<E> v) throws InvalidPositionException;
public boolean isExternal (Position<E> v) throws InvalidPositionException;
public boolean isRoot (Position <E> v) throws InvalidPositionException;
}

55
tree/TreeNode.java Normal file
View File

@@ -0,0 +1,55 @@
package tree;
import position.Position;
import position.PositionList;
/**
* Created with xgiovio.macbookair.
* User: xgiovio
* Date: 07/04/14
* Time: 15:30
*/
public class TreeNode<E> implements TreePosition<E> {
private E element = null;
private TreePosition<E> parent = null;
private PositionList<Position<E>> children= null;
public TreeNode(E in_element, TreePosition<E> in_parent, PositionList<Position<E>> in_children ){
element = in_element;
parent = in_parent;
children = in_children;
}
@Override
public void setElement(E o) {
element = o;
}
@Override
public PositionList<Position<E>> getChildren() {
return children;
}
@Override
public void setChildren(PositionList<Position<E>> c) {
children = c;
}
@Override
public TreePosition<E> getParent() {
return parent;
}
@Override
public void setParent(TreePosition<E> v) {
parent = v;
}
@Override
public E element() {
return element;
}
}

20
tree/TreePosition.java Normal file
View File

@@ -0,0 +1,20 @@
package tree;
import position.Position;
import position.PositionList;
/**
* Created with xgiovio.macbookair.
* User: xgiovio
* Date: 07/04/14
* Time: 15:31
*/
public interface TreePosition<E> extends Position<E> {
public void setElement(E o);
public PositionList<Position<E>> getChildren ();
public void setChildren (PositionList<Position<E>> c);
public TreePosition<E> getParent();
public void setParent (TreePosition<E> v);
}