Почему Binary деревья поиска?

голоса
6

Я читал бинарное дерево поиска и подумал , что зачем нам BST вообще? Все вещи , которые , насколько я знаю , может быть также достичь с помощью простых отсортированных массивов. Для , например , - для того , чтобы построить BST , имеющий п элементов, мы требуется n*O(log n)время , т.е. O(nlog n)и время поиска есть O(log n). Но эта вещь также можно достичь с помощью массива. Мы можем иметь упорядоченный массив (требуется O(nlog n)время) и время поиска , что также O(log n)т.е. двоичного поиска Algo. Тогда зачем нам нужна еще одна структура данных на всех? Существует ли какое - либо другое использование / применение BST , которые делают их такими особенными?

--Ravi

Задан 14/10/2010 в 16:28
источник пользователем
На других языках...                            


4 ответов

голоса
4

Как насчет отсортированного времени вставки?

Ответил 14/10/2010 в 16:30
источник пользователем

голоса
1

В программировании графики, если вы расширили объект (т.е. которые представляют собой интервал в каждом измерении, а не только точку), вы можете добавить их к наименьшему уровню бинарного дерева (обычно это октодерева), где они вписываются в полностью.

И если вы не заранее рассчитать дерево / SortedList в O (п) случайное время вставки в списке может быть слишком медленным. Время вставки в виде дерева, с другой стороны только O (журнал (п)).

Ответил 14/10/2010 в 16:36
источник пользователем

голоса
9

Массивы являются большими, если вы говорите о записи один раз, прочитало много раз типа взаимодействий. Это когда вы получаете вниз к вставке, замена и удаление, в котором BST действительно начинает блестеть по сравнению с массивом. Так как они узел на основе, а не на основе непрерывного куска памяти, стоимость перемещения элемента либо в коллекцию или из коллекции быстро, сохраняя при этом отсортированный характер коллекции.

Думайте об этом, как если бы разница в вставки между связанными списками по сравнению с массивами. Это упрощение, но он подчеркивает аспект преимущества я отметил выше.

Ответил 14/10/2010 в 16:53
источник пользователем

голоса
7

Представьте, у вас есть массив с миллиона элементов.

Вы хотите, чтобы вставить элемент в ячейке 5.

Таким образом, вы вставляете в конце массива, а затем сортировать.

Скажем, массив полон; что это O (Nlog н), который является 1000000 * 6 = 6000000 операций.

Представьте, у вас есть сбалансированное дерево.

Это O (журнал N), плюс немного для балансировки = 6 + бит, назовем его 10 операций.

Итак, вы только что потратили 6000000 опа сортировки массива. Затем вы хотите , чтобы найти этот элемент. Чем ты занимаешься? бинарный поиск - O (журнал N) - что точно так же , как то , что вы собираетесь делать , когда вы будете искать в дереве!

Теперь представьте, что вы хотите выделить -another- элемент.

Ваш массив полон! чем ты занимаешься? перераспределять массив с п дополнительными элементами и тетср лота? Вы действительно хотите тетср 4mbytes?

В дереве, вы просто добавить еще один элемент ...

Ответил 16/10/2010 в 10:14
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more