Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подготовка к экзамену.docx
Скачиваний:
1
Добавлен:
06.10.2025
Размер:
600.54 Кб
Скачать

10. Ассоциативные массивы и хэш-таблицы.

Хеш-таблица — это структура данных, реализующая интерфейс ассоциативного массива, а именно, она позволяет хранить пары (ключ, значение) и выполнять три операции: операцию добавления новой пары, операцию поиска и операцию удаления пары по ключу.

Существуют два основных варианта хеш-таблиц: с цепочками и открытой адресацией. Хеш-таблица содержит некоторый массив H, элементы которого есть пары (хеш-таблица с открытой адресацией) или списки пар (хеш-таблица с цепочками).

цепочки и открытая адречация

бакеты считаютчя нса основе хэщ функций

перерассчет

11. Деревья. Дерево поиска и бинарное дерево поиска. Основные понятия

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

Количество дочерних узлов обозначает арность дерева; другими словами, n-арное дерево не может содержать более n дочерних элементов (потомков) для каждого узла. Арность дерева — это тоже самое, что и степень дерева.

Путь — это множество переходов в дереве от корня к необходимому узлу. Число узлов в любом пути называется длиной пути, а максимальная длина пути из всех — высотой дерева.

Дерево поиска — структура данных для работы с упорядоченными множествами. Один узел может иметь сколько угодно потомков.

Двоичное дерево поиска — это двоичное дерево, которое используется для организации хранения данных таким образом, чтобы гарантировать поиск элемента за логарифмическое время:

  • Оба поддерева — левое и правое — являются двоичными деревьями поиска.

  • У всех узлов левого поддерева для произвольного узла значения ключей меньше значения ключа этого узла.

  • У всех узлов правого поддерева для произвольного узла значения ключей больше либо равны значения ключа этого узла.

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

+Основным преимуществом является возможная высокая эффективность реализации основанных на нём алгоритмов поиска и сортировки.

12. Сбалансированные деревья. Основные понятия. Малый и большой повороты дерева. Обходы дерева

Сбалансированное дерево – сбалансированное по высоте двоичное дерево поиска.

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

Для каждой его вершины высота её двух поддеревьев различается не более чем на 1 (в случае АВЛ), количество черных узлов совпадает (в случае КЧ дерева), в последнем уровне нет ''дырок'' (в случае 2-3-4… дерева).

Малый поворот бывает левый и правый.

Балансировкой вершины называется операция, которая в случае разницы высот левого и правого поддеревьев |высота (L)− высота (R)| = 2, изменяет связи предок-потомок в поддереве данной вершины так, чтобы восстановилось свойство дерева | высота (L)− высота (R) | ⩽ 1, иначе ничего не меняет.

Двойные (большие) повороты выполняются в случае, если при малом повороте невозможно сбалансировать дерево. Большие повороты выполняются относительно данного узла и родителя/дяди/деда данного узла (зависит ос случае).

Двоичное дерево представляет собой в общем случае неупорядоченный набор узлов, который

  • либо пуст (пустое дерево)

  • либо разбит на три непересекающиеся части:

  • узел, называемый корнем;

  • двоичное дерево, называемое левым поддеревом;

  • двоичное дерево, называемое правым поддеревом.

Таким образом, двоичное дерево — это рекурсивная структура данных.

Каждый узел двоичного дерева можно представить в виде структуры данных, состоящей из следующих полей:

  • данные, обладающие ключом, по которому их можно идентифицировать;

  • указатель на левое поддерево;

  • указатель на правое поддерево;

  • указатель на родителя (необязательное поле).

+Значение ключа уникально для каждого узла.

Соседние файлы в предмете Алгоритмы и системы данных