Я знаю, что если сбалансировано, высота BST равна O (log (n)), что означает, что поиск O (log (n)), но делает несбалансированное дерево сбалансированным можно было бы увеличить время выполнения вставки/удаления, так как вам придется перебалансировать его после каждой вставки/удаления.Найти k-й наименьший элемент в O (log n)
Есть ли другой способ изменить BST, чтобы я мог найти наименьший элемент Kth в O (log (n)), не влияя на время выполнения других функций?
Поскольку балансировка дерева амортизируется несколькими вызовами, это увеличивает время выполнения, но это не увеличивает вашу асимптотическую сложность. Сохранение сбалансированного дерева - относительно простая задача - посмотрите RB-деревья на хороший пример того, как это сделать. – dasblinkenlight
http://pine.cs.yale.edu/pinewiki/OrderStatisticsTree –
Зачем вам нужен запас для балансировки? После того, как сложность балансировки не увеличивается, вы можете использовать балансировку, а затем найти k-й наименьший элемент в O (logn) времени! –