From 7848d415e4b9e9cd584a6a77f0eb66acc7b97b83 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Proch=C3=A1zka?= <david@prochazka.dev>
Date: Fri, 2 Apr 2021 09:28:47 +0200
Subject: [PATCH] ADD: optimization when the new node is build on every object,
 public methods

---
 src/mhtree/Node.java | 29 ++++++++++++++++++++++++-----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/src/mhtree/Node.java b/src/mhtree/Node.java
index 2bfcdaa..46f16bc 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();
     }
-- 
GitLab