<p><a href="https://github.com/rcurtin" class="user-mention">@rcurtin</a> <br>
This PR remove the reverse compatibility code inside <code>NeighborSearch</code> class.<br>
This is intended to be merged for version 3.0.0.<br>
The only difference with the PR <a href="https://github.com/mlpack/mlpack/pull/762" class="issue-link js-issue-link" data-url="https://github.com/mlpack/mlpack/issues/762" data-id="171355346" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#762</a>  is the last commit.<br>
I will rebase on top of master when <a href="https://github.com/mlpack/mlpack/pull/762" class="issue-link js-issue-link" data-url="https://github.com/mlpack/mlpack/issues/762" data-id="171355346" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#762</a> is merged, so it will be clearer.<br>
Thanks!<br>
Marcos</p>

<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>&nbsp;&nbsp;<a href='https://github.com/mlpack/mlpack/pull/768'>https://github.com/mlpack/mlpack/pull/768</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>Use enum type to define the different search modes (Closes #750).</li>
  <li>Remove ambiguity in constructors.</li>
  <li>Add GreedySingleTreeTraverser.</li>
  <li>Add GetNearestChild() and GetFurthestChild() methods.</li>
  <li>Add a new method GetBestChild() to SortPolicies.</li>
  <li>Define a general GreedySingleTreeTraverser.</li>
  <li>Add support for Greedy Single Tree Search, inside NeighborSearch class.</li>
  <li>Define SearchMode outside NeighborSearch class, to it can be used by NSModel.</li>
  <li>Update NSModel to consider different Search Modes.</li>
  <li>Update knn/kfn methods and tests, to consider NeighborSearchMode.</li>
  <li>Fix linker error.</li>
  <li>Add missed epsilon parameter.</li>
  <li>Add --algorithm command line option.</li>
  <li>Fix greedy traverser to consider points in non-leaf nodes.</li>
  <li>Optimize GetNearestChild for Spill Trees.</li>
  <li>Simplify spill single tree traverser to use GetBestChild.</li>
  <li>Add GetFurthestChild() and GetNearestChild() for queryNode.</li>
  <li>Simplify spill dual tree traverser to use GetBestChild.</li>
  <li>Always consider the splitting hyperplane to estimate the nearest/furthest child.</li>
  <li>Improve documentation</li>
  <li>Return index instead of pointers for GetBestChild().</li>
  <li>Remove SetSearchMode() and add Greedy() flags.</li>
  <li>Update tests to use the new API.</li>
  <li>Use NeighborSearchMode enum type in cf.</li>
  <li>Update NeighborSearch API to use NeighborSearchMode enum type.</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-0">src/mlpack/core/tree/CMakeLists.txt</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-1">src/mlpack/core/tree/binary_space_tree/binary_space_tree.hpp</a>
    (30)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-2">src/mlpack/core/tree/binary_space_tree/binary_space_tree_impl.hpp</a>
    (98)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-3">src/mlpack/core/tree/cover_tree/cover_tree.hpp</a>
    (30)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-4">src/mlpack/core/tree/cover_tree/cover_tree_impl.hpp</a>
    (116)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-5">src/mlpack/core/tree/greedy_single_tree_traverser.hpp</a>
    (52)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-6">src/mlpack/core/tree/greedy_single_tree_traverser_impl.hpp</a>
    (47)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-7">src/mlpack/core/tree/rectangle_tree/rectangle_tree.hpp</a>
    (30)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-8">src/mlpack/core/tree/rectangle_tree/rectangle_tree_impl.hpp</a>
    (126)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-9">src/mlpack/core/tree/spill_tree/spill_dual_tree_traverser_impl.hpp</a>
    (56)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-10">src/mlpack/core/tree/spill_tree/spill_single_tree_traverser_impl.hpp</a>
    (7)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-11">src/mlpack/core/tree/spill_tree/spill_tree.hpp</a>
    (47)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-12">src/mlpack/core/tree/spill_tree/spill_tree_impl.hpp</a>
    (145)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-13">src/mlpack/methods/cf/cf.cpp</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-14">src/mlpack/methods/neighbor_search/kfn_main.cpp</a>
    (68)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-15">src/mlpack/methods/neighbor_search/knn_main.cpp</a>
    (72)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-16">src/mlpack/methods/neighbor_search/neighbor_search.hpp</a>
    (76)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-17">src/mlpack/methods/neighbor_search/neighbor_search_impl.hpp</a>
    (330)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-18">src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp</a>
    (19)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-19">src/mlpack/methods/neighbor_search/neighbor_search_rules_impl.hpp</a>
    (16)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-20">src/mlpack/methods/neighbor_search/ns_model.hpp</a>
    (32)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-21">src/mlpack/methods/neighbor_search/ns_model_impl.hpp</a>
    (142)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-22">src/mlpack/methods/neighbor_search/sort_policies/furthest_neighbor_sort.hpp</a>
    (20)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-23">src/mlpack/methods/neighbor_search/sort_policies/nearest_neighbor_sort.hpp</a>
    (21)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-24">src/mlpack/tests/akfn_test.cpp</a>
    (14)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-25">src/mlpack/tests/aknn_test.cpp</a>
    (32)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-26">src/mlpack/tests/kfn_test.cpp</a>
    (22)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-27">src/mlpack/tests/knn_test.cpp</a>
    (40)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-28">src/mlpack/tests/rectangle_tree_test.cpp</a>
    (28)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-29">src/mlpack/tests/serialization_test.cpp</a>
    (10)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/768/files#diff-30">src/mlpack/tests/vantage_point_tree_test.cpp</a>
    (8)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/mlpack/mlpack/pull/768.patch'>https://github.com/mlpack/mlpack/pull/768.patch</a></li>
  <li><a href='https://github.com/mlpack/mlpack/pull/768.diff'>https://github.com/mlpack/mlpack/pull/768.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">&mdash;<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/mlpack/mlpack/pull/768">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJ4bFKkQO8rEs2u0UR_8ffBB-3-qimJpks5qh2pfgaJpZM4JpKZ4">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFNk9xv7A4UKlq9UFg0FeJf2Qnqe0ks5qh2pfgaJpZM4JpKZ4.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/mlpack/mlpack/pull/768"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/mlpack/mlpack","title":"mlpack/mlpack","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/mlpack/mlpack"}},"updates":{"snippets":[{"icon":"DESCRIPTION","message":"Search mode 3.0.0 (#768)"}],"action":{"name":"View Pull Request","url":"https://github.com/mlpack/mlpack/pull/768"}}}</script>