<p>In <a href="https://github.com/mlpack/mlpack/pull/747#discussion_r74272371">src/mlpack/core/tree/spill_tree/spill_tree_impl.hpp</a>:</p>
<pre style='color:#555'>&gt; +  }
&gt; +
&gt; +  std::vector&lt;size_t&gt; leftPoints, rightPoints;
&gt; +  // Split the node.
&gt; +  overlappingNode = SplitPoints(tau, rho, points, leftPoints, rightPoints);
&gt; +
&gt; +  // We don&#39;t need the information in points, so lets clean it.
&gt; +  std::vector&lt;size_t&gt;().swap(points);
&gt; +
&gt; +  // Now we will recursively split the children by calling their constructors
&gt; +  // (which perform this splitting process).
&gt; +  left = new SpillTree(this, leftPoints, tau, maxLeafSize, rho);
&gt; +  right = new SpillTree(this, rightPoints, tau, maxLeafSize, rho);
&gt; +
&gt; +  // Update count number, to represent the number of descendant points.
&gt; +  count = left-&gt;NumDescendants() + right-&gt;NumDescendants();
</pre>
<p>Hi <a href="https://github.com/rcurtin" class="user-mention">@rcurtin</a> , thanks for your comments.<br>
Yes, I have thought of that approach that you mention, and many similar options. I tried to explain the problem in the previous post, but it is a bit difficult to formulate.<br>
Suppose I implement your approach. And we have a tree of 2 levels of overlapping nodes:</p>

<pre><code> N
 |''''''''''\
N_1          N_2
 |  \         |   \
N_11  N_12   N_21  N_22
</code></pre>

<p>The problem is how to organize the points in the second level, in the nodes <code>N_21</code> and nodes <code>N_22</code>.<br>
Suppose we want to get the <code>i-th</code> descendant point of the node N, included in N_2, but not included in N_1.<br>
This means when <code>i &gt;= N_1.NumDescendants()</code>.</p>

<p>Let U: points held in both N_1 and N_2.</p>

<p>As,  N_2 is splitted in N_21 and N_22 by another different hyperplane, some points of U will be included in N_21 and some points of U will be included in N_22.</p>

<p>If <code>i &lt; N_1.NumDescendants() + N_21.NumDescendants()</code>, we will call: <code>N_21.Descendant( i - N_1.NumDescendants())</code></p>

<p>As N_21 includes some points from U, we can repeat a point that was included in the node N_1. </p>

<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/747/files/a71b57caa90311f5542180bc0553449c3691395d#r74272371">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJ4bFBBMEcS5hfd80zB0Gggvp9XVfu_Hks5qefOqgaJpZM4JZzLU">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFCKHW1zlXk8c3wyN5KLMz8qAGrMPks5qefOqgaJpZM4JZzLU.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/747/files/a71b57caa90311f5542180bc0553449c3691395d#r74272371"></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":"PERSON","message":"@MarcosPividori in #747: Hi @rcurtin , thanks for your comments.\r\nYes, I have thought of that approach that you mention, and many similar options. I tried to explain the problem in the previous post, but it is a bit difficult to formulate.\r\nSuppose I implement your approach. And we have a tree of 2 levels of overlapping nodes:\r\n```\r\n N\r\n |''''''''''\\\r\nN_1          N_2\r\n |  \\         |   \\\r\nN_11  N_12   N_21  N_22\r\n```\r\nThe problem is how to organize the points in the second level, in the nodes `N_21` and nodes `N_22`.\r\nSuppose we want to get the `i-th` descendant point of the node N, included in N_2, but not included in N_1.\r\nThis means when `i \u003e= N_1.NumDescendants()`.\r\n\r\nLet U: points held in both N_1 and N_2.\r\n\r\nAs,  N_2 is splitted in N_21 and N_22 by another different hyperplane, some points of U will be included in N_21 and some points of U will be included in N_22.\r\n\r\nIf `i \u003c N_1.NumDescendants() + N_21.NumDescendants()`, we will call: `N_21.Descendant( i - N_1.NumDescendants())`\r\n\r\nAs N_21 includes some points from U, we can repeat a point that was included in the node N_1. \r\n\r\n"}],"action":{"name":"View Pull Request","url":"https://github.com/mlpack/mlpack/pull/747/files/a71b57caa90311f5542180bc0553449c3691395d#r74272371"}}}</script>