Вы можете использовать более простые, чем параллельные массивы, если ваша полезная нагрузка допускает значение в виде значения: вы можете использовать неявное дерево (то есть вообще не связываться со ссылками).
payload_type a[tree_size];
Просто длинный плоский массив, содержащий только значения полезной нагрузки, с позицией в массиве, кодирующей структуру ссылки:
a[0]
является корнем
a[1]
- root-> left
a[2]
является root-> right
a[3]
- root-> left-> left
a[4]
- root-> left-> right
- ...
Для узла в позиции i перейдите к 2 * i + 1 для левого и 2 * i + 2 для правого
Вы инициализируете его для всех часовых значений и начинаете добавлять вещи ...