Если вы можете использовать немного памяти, это звучит так, как будто комбинированная коллекция может работать на вас.
Например, то, что вы ищете, очень похоже на связанный список. Вы всегда можете добраться до минимального элемента, но вставка или поиск произвольного узла может занять больше времени, потому что вам нужно выполнить поиск O (n)
Если вы объедините связанный список и дерево, вы можете получить лучшее из обоих миров. Чтобы найти элемент для операций get / insert / delete, вы должны использовать дерево для поиска элемента. Узел "holder" элемента должен иметь способы перехода из дерева в связанный список для операций удаления. Также связанный список должен быть двусвязным списком.
Так что я думаю, что получить наименьший элемент будет O (1), любой произвольный поиск / удаление будет O (logN) - я думаю, что даже вставка будет O (logN), потому что вы могли бы найти, куда поместить его дерево, посмотрите на предыдущий элемент и перейдите от него к узлу связанного списка, затем добавьте «следующий».
Хм, это начинает казаться действительно полезной структурой данных, возможно, немного расточительной в памяти, но я не думаю, что какая-либо операция будет хуже, чем O (logN), если вам не придется заново балансировать дерево.