Чтобы вставить элемент в кучу, вы можете поместить его в любое место и поменять его местами с родительским элементом, пока ограничение кучи снова не вступит в силу. Swap-with-parent - это операция, которая сохраняет структуру двоичного дерева кучи без изменений. Это означает, что куча размера N будет представлена как массив из N-ячеек, и вы можете добавить новый элемент в логарифмическом времени.
Двоичное дерево поиска может быть представлено в виде массива размера N, использующего ту же структуру представления, что и куча (дочерние элементы 2n и 2n + 1), но вставить элемент таким способом намного сложнее, поскольку в отличие от ограничения кучи, Ограничение бинарного дерева поиска требует выполнения поворотов для получения сбалансированного дерева. Таким образом, либо вам удастся сохранить дерево с N-узлами в массиве из N-ячеек по цене, превышающей логарифмический, либо вы тратите пространство, сохраняя дерево в большем массиве (если мне не изменяет память, красное дерево тратить до 50% вашего массива).
Итак, двоичное дерево поиска в массиве интересно только в том случае, если данные внутри него постоянны. И если это так, то вам не нужна структура кучи (дочерние элементы 2n и 2n + 1): вы можете просто отсортировать массив и использовать двоичный поиск .