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