Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zapiska.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
733.26 Кб
Скачать

Введение

Каждый день мы сталкиваемся с огромными объемами информации: когда читаем книгу, смотрим фильм или же просто сидим в интернете. И с каждым днем этой информации становится все больше. То же самое и в программировании. Современные программы обрабатывают огромные объемы информации за считанные секунды. И это во многом заслуга бинарных деревьев поиска. Бинарное дерево (двоичное дерево) – иерархическая структура данных, в которой каждый узел имеет не более двух потомков [1]. Как правило, первый называется родительским узлом, а дети называются левым и правым наследниками. Для практических целей обычно используют два подвида бинарных деревьев – двоичное дерево поиска и двоичная куча.

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

С помощью бинарных деревьев также можно представлять произвольные арифметические выражения. Каждому листу в таком дереве соответствует операнд, а каждому родительскому узлу – операция. В общем случае дерево при этом может оказаться не бинарным. Однако если число операндов любой операции будет меньше или равно двум, то дерево будет бинарным. Причем если все операции будут иметь два операнда, то нелистовые узлы такого дерева будут всегда иметь по два потомка. Заметим, что 4 основных арифметических операции как раз бинарные. Бинарные деревья могут быть использованы не только для представления выражений, но и для их вычисления. Для того чтобы выражение можно было вычислить, в листьях записываются значения операндов. Затем от листьев к корню производится выполнение операций. В процессе выполнения в узел операции записывается результат ее выполнения. В конце вычислений в корень будет записано значение, которое и будет являться результатом вычисления выражения.

Из всего этого стоит сделать вывод, что бинарные деревья – это отличный механизм, позволяющий реализовывать сложные алгоритмы, а также обеспечивающий быструю скорость работы.

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

  1. Бинарные деревья и их актуальность

    1. Назначение бинарных деревьев

Деревья являются одной из старейших и наиболее часто используемых структур данных в программировании. В самых общих чертах деревья – это просто неориентированные графы, называемые свободными деревьями. Однако наибольшее распространение получили бинарные деревья поиска. Бинарные деревья поиска упрочились в употреблении так сильно, что если кто-то говорит о деревьях, то подразумевается обычно бинарное дерево поиска.

Часто программам необходимо хранить огромные объемы информации. Это может быть гистограмма уникальных слов в файле, сортировка огромной кучи IP-адресов, с которых были установлены соединения на сокете или просто база данных адресов электронной почты. Ни массивы, ни связные списки не подходит для нужд, описанных выше. То, что нужно – это структура данных, которая хранит данные в отсортированном виде без необходимости совершать дополнительные телодвижения с простыми операциями вставки и удаления, а также эффективным поиском. Ни связный список, ни массивы не обладают такими свойствами, а потому они являются плохими решениями.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]