Нам дано сбалансированное дерево размера N
, в том смысле, что для каждого узла в дереве, если корневое дерево, укорененное на этом узле, имеет размер и k
детей, размеры его k поддеревков равны Omega(n/k)
. Нам также даются N
точек на плоскости, три не коллинеарны. Мы пытаемся найти биекцию между узлами в этом дереве и точки на плоскости, такие, что рисование дерева на плоскости не приведет к каким-либо пересечениям ребер. k
- Theta(1)
, и может быть разным для каждого узла.Сопоставление сбалансированного дерева с точками на плоскости
Я пытаюсь найти рекурсивное решение, которое решает это, но безрезультатно, так как я не уверен, как мы можем гарантировать отсутствие пересечений. Целевое время выполнения: O(n log^2 n)
, поэтому повторение формы T(n)=k*T(n/k) + O(n log n)
приведет к этому, поэтому я пытаюсь думать по этим строкам. Я должен сортировать точки по x-координате, находить медиану, а затем разбивать остальную часть точек на блоки и рекурсивно решать ее. Но я вытащил тестовые примеры, которые позволили этому решению выйти из строя. Любая помощь?