From 595ae211e25babebe2aadc250ef5edf596c91f78 Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Thu, 5 Feb 2015 15:31:38 -0500 Subject: [PATCH] Try to keep the query and reference levels equal. --- .../core/tree/binary_space_tree/dual_tree_traverser_impl.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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.