Полностью задача звучит так: есть массив из N объектов, из которых я делаю бинарное дерево (алгоритм сплита какой-то мне известен) с ограничением по глубине, т.е. в каждом листе будет несколько объектов в произвольном порядке. Как решить такую задачу - я понимаю: в каждом узле храним интервал индексов исходного массива, а когда выясняется условие сплита - делаем partition, и т.д. Однако у меня есть одно усложнение. Изредка про некоторые объекты выясняется во время сплита, что их нужно скопировать в обе ветви, потому-что это хитрый объект с внутренней структурой.