- •Исключение узла из дерева
- •а) Удаляемый элемент-лист (3, 8, 13, 18).
- •б) Удаляемый элемент имеет одного "сына".
- •в) Удаляемый элемент имеет двух "сыновей".
- •Удаляемый элемент ЗАМЕНЯЕТСЯ наиболее близким по значению листом (чтобы упорядоченность дерева не нарушилась).
- •Обход
- •Существует три метода обхода дерева:
- •Процедура обхода двоичного дерева сверху вниз
- •Процедура обхода двоичного дерева слева направо
- •Процедура обхода двоичного дерева снизу вверх
- •Порядок обхода узлов сверху вниз
- •Порядок обхода узлов слева направо
- •Порядок обхода узлов снизу вверх
- •Переменные таблицы
- •Свойства переменных таблиц:
- •Хеш- таблица – это таблица, в которой для доступа к записи используется индекс,
- •Отобра- жающий вектор
- •Занесение в хеш-таблицу
- •Поиск в хеш-таблице
- •Методы вычисления функции расстановки для числового ключа :
- •б) Метод свертки
- •в) Метод деления по модулю
- •Методы вычисления функции расстановки для символьного ключа:
- •Требования к хорошей хеш- функции :
- •Таблица с прямым доступом (частный случай хеш- таблицы)
- •Обычно допускается коллизия (переполнение):
- •Методы устранения переполнений (разрешения конфликтов):
- •Метод открытого перемешивания
- •Занесение записи
- •Поиск записи
- •Вычисление вторичного индекса
- •Метод линейных проб с простым шагом p
- •Метод квадратичных проб
- •Метод прямого связывания (перемешивание с цепочками переполнения)
- •Достоинства хеш таблиц:
- •Недостатки хеш таблиц:
б) Метод свертки
ключ
Индекс (сложение вып. по модулю!)
+
+
f(97434658) = 97+434+658 = 1189 =>189; |
i=189 |
f(31269857) = 31+269+857 = 1157 =>157; |
i=157 |
21
в) Метод деления по модулю
.
f(К) = K mod M или f(К) = K mod M + 1.
М длина вектора или некоторое простое число, близкое к n.
22
Методы вычисления функции расстановки для символьного ключа:
г) Первый и последний символы преобразуются в число
д) Все символы ключа преобразуются в число
е) Из середины ключа выделяются n символов и преобразуются в десятичное число
. . . . . . . 23
Требования к хорошей хеш- функции :
•быстрое вычисление (так как его время включается во время поиска);
•равномерное распределение записей по позициям отображающего вектора (то есть коллизии должны возникать как можно реже).
24
Таблица с прямым доступом (частный случай хеш- таблицы)
K1 K2, f(K1) f(K2)
25
Обычно допускается коллизия (переполнение):
K1 K2, f(K1) = f(K2)
то есть несколько записей могут претендовать
на одну позицию в отображающем векторе
26
Методы устранения переполнений (разрешения конфликтов):
•метод открытого перемешивания,
•метод прямого связывания.
27
Метод открытого перемешивания
Переполняющие записи размещаются в свободных позициях отображающего вектора (в позициях вторичных индексов)
28
Занесение записи
|
|
начало |
|
R – новая добавляемая |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Новая |
|
запись |
|
запись |
||||||
|
|
|
|
|||||||||
|
|
|
|
|
R |
|
T – отображающий вектор |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F – функция расстановки |
|
|
|
I=f(R.key) |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
- |
I -- первичный индекс |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
T[I] занята |
|
|||||||||
|
|
|
|
|||||||||
|
|
|
|
|
+ T[I]:=R
I:=Івт
конец |
29 |
Поиск записи
|
|
|
|
начало |
|
|
|
|
|
|
|
R – найденная запись |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Искомый |
|
|
|
|
|
|
|
T – отображающий вектор |
|||||||
|
|
|
|
ключ К |
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
F – функция расстановки |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
I=f(К) |
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
I -- первичный индекс |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
T[I].key<>K |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
+ |
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
R:=T[I] |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
I:=Івт |
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
конец |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |