Подтвердить что ты не робот

Как вычислить указатели в двоичном дереве с макетом Ван Эмд Боас

Я хотел бы реализовать игнорирующее кэш двоичное дерево, которое хранится в массиве, используя макет Ван Эмд Боас, используя неявные указатели. Все элементы в дереве - это 32-битные целые числа, и дерево станет довольно большим, поэтому сохранение указателей будет означать как минимум 3 раза больше данных.

Проблема заключается в том, что я не могу придумать какой-либо нетеративный способ вычисления указателей для левого и правого детей с учетом индекса node (я могу отслеживать любую информацию при обходе дерева). Многие документы/лекции относятся к таким деревьям с неявными указателями, но я не видел алгоритма вычисления указателей. Есть ли эффективный способ сделать это?

4b9b3361

Ответ 1

Боб Коупленд обладает очень хорошей реализацией деревьев Ван Эмде Боаса в GitHub. Он использует неявные указатели и вычисляет указатели, сначала вычисляя указатель ширины, после чего указатели vEB являются простыми условными.