diff --git a/src/mhtree/Node.java b/src/mhtree/Node.java index 2bfcdaaf8595a8704a4ab6987ba52de37491a319..46f16bc4aabccc0f6b17c40b89c6f0c2352336bb 100644 --- a/src/mhtree/Node.java +++ b/src/mhtree/Node.java @@ -11,7 +11,7 @@ import java.util.Collection; import java.util.List; import java.util.stream.Collectors; -abstract class Node implements Serializable { +public abstract class Node implements Serializable { /** * Serialization ID @@ -38,9 +38,32 @@ abstract class Node implements Serializable { .flatMap(Collection::stream) .collect(Collectors.toList()); + if (nodes.size() == distances.getObjectCount()) { + return new InternalNode(distances, insertType, objectToNodeDistance, nodes); + } + return new InternalNode(distances.getSubset(objects), insertType, objectToNodeDistance, nodes); } + /** + * Returns a list of hull objects. + * + * @return a list of hull objects + */ + public List<LocalAbstractObject> getHullObjects() { + return hull.getHull(); + } + + /** + * Returns true if the {@code object} is covered. + * + * @param object the object to be checked + * @return true if the {@code object} is covered. + */ + public boolean isCovered(LocalAbstractObject object) { + return hull.isExternalCovered(object); + } + @Override public String toString() { return "Node{hull=" + hull + '}'; @@ -66,10 +89,6 @@ abstract class Node implements Serializable { return !isLeaf(); } - protected List<LocalAbstractObject> getHullObjects() { - return hull.getHull(); - } - protected int getHullObjectCount() { return hull.getRepresentativesCount(); }