diff --git a/src/mhtree/MHTree.java b/src/mhtree/MHTree.java index ea9876115386856714bbce938b028c04404dbb93..038022534995e7175b93bee83ad239e56a761152 100644 --- a/src/mhtree/MHTree.java +++ b/src/mhtree/MHTree.java @@ -53,13 +53,17 @@ public class MHTree extends Algorithm implements Serializable { while (!queue.isEmpty() && operation.getAnswerCount() < operation.getK()) { Node currentNode = queue.poll().getNode(); - if (currentNode.isLeaf()) - for (LocalAbstractObject obj : currentNode.getObjects()) - operation.addToAnswer(obj); + if (currentNode.isLeaf()) { + for (LocalAbstractObject obj : currentNode.getObjects()) { + if (operation.getAnswerCount() >= operation.getK() && currentNode.getDistance(object) > operation.getAnswerDistance()) + continue; - if (!currentNode.isLeaf()) + operation.addToAnswer(obj); + } + } else { for (Node child : ((InternalNode) currentNode).getChildren()) queue.add(new ObjectToNodeDistanceRank(child, object)); + } } operation.endOperation();