diff --git a/src/mlpack/core/tree/binary_space_tree/dual_tree_traverser_impl.hpp b/src/mlpack/core/tree/binary_space_tree/dual_tree_traverser_impl.hpp index 1a1d35348f..a226cc022d 100644 --- a/src/mlpack/core/tree/binary_space_tree/dual_tree_traverser_impl.hpp +++ b/src/mlpack/core/tree/binary_space_tree/dual_tree_traverser_impl.hpp @@ -67,7 +67,9 @@ DualTreeTraverser::Traverse( numBaseCases += referenceNode.Count(); } } - else if ((!queryNode.IsLeaf()) && referenceNode.IsLeaf()) + else if (((!queryNode.IsLeaf()) && referenceNode.IsLeaf()) || + (queryNode.NumDescendants() > 3 * referenceNode.NumDescendants() && + !queryNode.IsLeaf() && !referenceNode.IsLeaf())) { // We have to recurse down the query node. In this case the recursion order // does not matter.