public Node rebalance() { final AxisSplitter s = new AxisSplitter(splitter.index, splitter.distribution.getMean()); final Node l; if (null != left) { l = left.rebalance(); } else if (count > 10) { l = new Node(new AxisSplitter((splitter.index + 1) % dimensions, 0)); } else { l = null; } final Node r; if (null != right) { r = right.rebalance(); } else if (count > 10) { r = new Node(new AxisSplitter((splitter.index + 1) % dimensions, 0)); } else { r = null; } return new Node(s, l, r); }
public void rebalance() { root = root.rebalance(); }