Двуродительские кучи
В обычных двоичных и -арных кучах мы научились быстро вставлять элементы и извлекать минимум. Кроме таких операций нам может понадобится искать элементы. В бинарных и -арных кучах нельзя реализовать эффективный поиск.
Двуродительская куча
Нарисуем полное двоичное псевдодерево, в котором у каждого узла есть до двух детей и до двух родителей. Потребуем также, чтобы значение любого узла было не больше значений его потомков.
Такую пирамидку можно хранить в массиве, записывая уровни один за другим по порядку, от верхнего к нижнему. Элементы на уровне будут хранится по индексам с по .
Гораздо удобнее представлять элементы кучи не по реальным индексам, а по парам , где — уровень вершины, а — номер вершины в ряду. Тогда индекс вершины будет вычисляться как .
У вершины с индексом родители имеют индексы и , а дети имеют индексы и . Если при вычислении индексов родителей индекс выходит за границы уровня, то это значит, что соответствующего родителя у элемента нет. Также, если при вычислении индексов детей индекс выходит за границы массива, то это значит, что соответствующего ребёнка у элемента нет.