<p>Hi <a href="https://github.com/rcurtin" class="user-mention">@rcurtin</a> <br>
I have implemented the general: <code>GreedySingleTreeTraverser</code>, as discussed in <a href="https://github.com/mlpack/mlpack/issues/761" class="issue-link js-issue-link" data-url="https://github.com/mlpack/mlpack/issues/761" data-id="171231224" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#761</a>.<br>
I needed to modify the NeighborSearch class, to consider a enum type, as was proposed in: <a href="https://github.com/mlpack/mlpack/issues/750" class="issue-link js-issue-link" data-url="https://github.com/mlpack/mlpack/issues/750" data-id="169464333" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#750</a><br>
Also, I implemented a new command line option: "--greedy"<br>
I think it is ready to be merged!<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/762'>https://github.com/mlpack/mlpack/pull/762</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>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-0">src/mlpack/core/tree/CMakeLists.txt</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-1">src/mlpack/core/tree/binary_space_tree/binary_space_tree.hpp</a>
    (18)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-2">src/mlpack/core/tree/binary_space_tree/binary_space_tree_impl.hpp</a>
    (48)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-3">src/mlpack/core/tree/cover_tree/cover_tree.hpp</a>
    (18)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-4">src/mlpack/core/tree/cover_tree/cover_tree_impl.hpp</a>
    (63)
  </li>
  <li>
    <strong>A</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/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/762/files#diff-6">src/mlpack/core/tree/greedy_single_tree_traverser_impl.hpp</a>
    (49)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-7">src/mlpack/core/tree/rectangle_tree/rectangle_tree.hpp</a>
    (18)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-8">src/mlpack/core/tree/rectangle_tree/rectangle_tree_impl.hpp</a>
    (70)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-9">src/mlpack/methods/neighbor_search/kfn_main.cpp</a>
    (22)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-10">src/mlpack/methods/neighbor_search/knn_main.cpp</a>
    (22)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-11">src/mlpack/methods/neighbor_search/neighbor_search.hpp</a>
    (125)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-12">src/mlpack/methods/neighbor_search/neighbor_search_impl.hpp</a>
    (487)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-13">src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp</a>
    (8)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-14">src/mlpack/methods/neighbor_search/neighbor_search_rules_impl.hpp</a>
    (8)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-15">src/mlpack/methods/neighbor_search/ns_model.hpp</a>
    (34)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-16">src/mlpack/methods/neighbor_search/ns_model_impl.hpp</a>
    (128)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-17">src/mlpack/methods/neighbor_search/sort_policies/furthest_neighbor_sort.hpp</a>
    (11)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-18">src/mlpack/methods/neighbor_search/sort_policies/nearest_neighbor_sort.hpp</a>
    (12)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-19">src/mlpack/tests/aknn_test.cpp</a>
    (14)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/mlpack/mlpack/pull/762/files#diff-20">src/mlpack/tests/knn_test.cpp</a>
    (14)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/mlpack/mlpack/pull/762.patch'>https://github.com/mlpack/mlpack/pull/762.patch</a></li>
  <li><a href='https://github.com/mlpack/mlpack/pull/762.diff'>https://github.com/mlpack/mlpack/pull/762.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/762">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJ4bFDCXvT2aBxEdCUNVg8y4E7PyXrzVks5qgXiEgaJpZM4JlKcS">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFI41ASzvD6N_oDkGxbcjyYJqw9Y2ks5qgXiEgaJpZM4JlKcS.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/762"></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":"General greedy traverser. (#762)"}],"action":{"name":"View Pull Request","url":"https://github.com/mlpack/mlpack/pull/762"}}}</script>