В чем преимущество двоичного дерева поиска по сортированному массиву с бинарным поиском? Просто с математическим анализом я не вижу разницы, поэтому я предполагаю, что накладные расходы на низком уровне должны быть разными. Ниже приведен анализ среднего времени выполнения.
Сортированный массив с бинарным поиском
поиск: O (log (n))
insert: O (log (n)) (мы запускаем двоичный поиск, чтобы найти, куда вставить элемент)
delete: O (log (n)) (мы запускаем двоичный поиск, чтобы найти элемент для удаления)
Дерево двоичного поиска
поиск: O (log (n))
вставка: O (log (n))
удаление: O (log (n))
Двоичные деревья поиска имеют наихудший случай O (n) для операций, перечисленных выше (если дерево не сбалансировано), так что это похоже на то, что на самом деле это будет хуже, чем отсортированный массив с бинарным поиском.
Кроме того, я не предполагаю, что мы должны предварительно отсортировать массив (что будет стоить O (nlog (n)), мы будем вставлять элементы один за другим в массив, как это было бы для двоичного дерева. Единственное преимущество BST, которое я вижу, это то, что он поддерживает другие типы обходов, например inorder, preorder, postorder.