
- •16. Обход n-арного дерева. Алгоритмы обхода n-арного дерева.
- •17.Бинарные деревья – основные определения, свойства и теоремы.
- •18,19.Не рекурсивные алгоритмы обхода бинарного дерева.
- •20.Поиск в упорядоченных таблицах. Последовательный поиск в массиве.
- •21.Поиск в упорядоченных таблицах. Двоичный поиск в массиве. Фибоначчиев поиск. Интерполяционный поиск.
- •22. Поиск в линейном списке.
- •23.Двоичное дерево поиска. Свойства. Основные операции.
- •Iterative_Tree_Search(t,k).
- •24. Добавление элемента в двоичном дереве поиска.
- •25. Удаление элемента в двоичном дереве поиска.
- •26. Абстрактная таблица. Основные операции. Способ реализации.
- •27. Авл – деревья. Свойства. Вращение. Высота авл-дерева (теорема) Определение и свойства авл-дерева
- •Авл - дерево
- •Повороты при балансировке
- •Алгоритм на псевдокоде
- •Алгоритм на псевдокоде
- •29. Удаление вершины в авл – дереве.
- •Алгоритм на псевдокоде
- •30. Красно – черные деревья. Свойства. Вращение. Высота красно – черного дерева.
- •Повороты
- •Операции поворота в бинарном дереве поиска
- •31. Добавление вершины в красно – черном дереве.
- •32. Удаление вершины в красно – черном дереве.
- •33. 2-3 Деревья. Основные свойства. Высота 2-3 дерева.
- •34 Обход 2-3 дерева.
- •35 Добавление элемента в 2 – 3 дерево.
- •36 Удаление элемента в 2 – 3 дереве.
- •37 2 – 3 – 4 Деревья. Основные свойства. Высота 2 – 3 – 4 дерева.
- •38 Добавление элемента в 2 – 3 – 4 дерево.
- •39. Стратегии внутренней сортировки.
- •40. Турнирная сортировка.
- •41. Пирамидальная сортировка.
- •42. Вставка с убывающим шагом.
- •43. Быстрая сортировка.
- •44. Быстрая двоичная сортировка.
- •45. Цифровая сортировка.
- •46. Карманная (блочная) сортировка.
- •47. Сортировка подсчетом
- •48. Сортировка слиянием. Рекурсивный алгоритм
- •49. Нижняя граница вычислительной сложности алгоритмов сортировки.
- •50. Поиск в глубину в графе. Рекурсивный алгоритм.
- •51. Поиск в ширину в графе. Не рекурсивный алгоритм.
- •52. Топологическая сортировка. Алгоритм топологической сортировки.
- •58. Стягивающие деревья. Нахождение стягивающего дерева методом поиска в ширину
- •59. Стягивающие деревья. Нахождение стягивающего дерева методом поиска в глубину.
- •60.Минимальные покрывающие деревья. Алгоритм Прима
- •61.Минимальные покрывающие деревья. Алгоритм Крускала.
- •62. Нахождение кратчайших путей в графе. Алгоритм Форда – Беллмана
- •63 Поиск кратчайших путей в графе. Алгоритм Дэйкстры.
- •64 Пути в бесконтурном графе.
- •65 Алгоритм Флойда поиска кратчайших путей между всеми парами вершин
- •66. Открытое хеширование.
- •67. Хеш-функции (ключи как натуральные числа, деление с остатком, умножение).
- •68. Закрытое хеширование. (Линейная последовательность проб. Квадратичная последовательность проб. Двойное хеширование).
- •69 Алгоритм Кнута-Морриса-Пратта.
- •70 Поиск подстрок. Алгоритм Бойера-Мура.
- •71. Поиск подстрок. Алгоритм Рабина-Карпа
- •72 Равномерный и неравномерный код. Префиксное кодирование.
- •73. Алгоритм Шеннона – Фано
- •74. Сжатие информации. Метод Хаффмана.
- •75. Исчерпывающий перебор. Задачи коммивояжера. Задача о назначениях.
- •77. Метод ветвей и границ. Задача о назначениях. Задача о рюкзаке. Задача коммивояжера.
- •Постановка задачи коммивояжера
- •Алгоритм решения задачи коммивояжера Жадный алгоритм
- •Полный перебор
- •78. Динамическое программирование. Восходящее и нисходящее динамическое программирование
- •79.Задача определения наиболее длинной общей подпоследовательности.
- •80. Перемножение последовательности матриц.
16. Обход n-арного дерева. Алгоритмы обхода n-арного дерева.
1)Прямой обход - Посещается корень дерева, затем все узлы левого поддерева, затем узлы след поддеревьев до правого (корень-лево-право).
2)Обратный обход - Сначала все узлы левого поддерева, затем последовательно узлы остальных поддеревьев в обратном порядке, последним посещается корень
(лево-прово-корень).
3)Симметричный обход – в симметричном порядке посещаются все узлы левого поддерева, потом корень, затем последовательно в симметричном порядке все узлы остальных поддеревьев (лево-корень-право).
Рекурсивный обход дерева(1)
Прямой:Preoder(n: узел);
1.Список обхода <- n(Обращение к узлу);
2.For каждого сына m-узла n в порядке слева направо doPreoder(m);( Рекурсивный обход левого поддерева. рекурсивный обход правого поддерева.)
Обратный: меняем местами пункты 1 и 2:
1. Рекурсивный обратный обход левого поддерева.
2.Рекурсивный обратный обход правого поддерева.
3. Обращение к узлу.
Симм. обход: Inorder(n: usel)
1.If n – list then заносим n в список обхода;
else begin
2.Inorder(самый левый сын узла n);
3.Список обхода <-n;
4.For каждого сына m узла n, исключая самого левого, в порядке слева направо do inorder(m) end;
1. Рекурсивный симметричный обход левого поддерева.
2. Обращение к узлу.
3. Рекурсивный симметричный обход правого поддерева.
Нерекурсивный а-м:
Используется стек, который хранит путь от корня до узла. Узел в вершине стека. (Обходим дерево слева направо)
Npreoder(T:tree)
S<-0/
M<-root(t)
While true do
If m<>nil then begin
{обр узел m}
push(m,s)
m<-left_child(m,T)
end else begin
if IsEmpty(S) then return;
m<-RightChild(Top(S),t)
pop(S); end
end
17.Бинарные деревья – основные определения, свойства и теоремы.
Бинарное дерево (деревья второй степени) – это конечное множество элементов (узлов), каждый из которых либо пуст (не связан с нижним уровнем, не имеет потомков, т.е. лист), либо является корнем (или узлом) с двумя различными бинарными поддеревьями – левым и правым.
Если каждый узел бинарного дерева, не являющийся листом, имеет не пустые правые и левые деревья, то дерево наз-ся строго бинарным. Строго бинарное дерево имеет (2n-1)-листов.Полное БДуровняn- это дерево, в котором каждый узел уровняnявл-ся листом и каждый узел уровня меньшеnимеет не пустые левые и правые поддеревья.
Почти полное БД– это БД, которое явл-ся полным вплоть до уровняk, а уровень (k+1)-заполнен слева направо. ППБД иногда наз-ся совершенными БД. ППБД при заданном количестве эл-ов БД будет иметь мин высоту.
Узлы располагаются по уровням. Корень - нулевой уровень и т.д. Максимальный уровень какого-либо элемента дерева называется его глубиной или высотой.
Основные операции:
1.Создать пустое БД
2.Включить узел в БД
3.Удалить узел из БД
4.Опр-ть пусто ли БД
5.Вып-ть поиск данных в БД
6.Обработать данные в узлах БД
7.Сохр-ть и восст-ть БД
8.Уничтожить БД.
Узлы определяются как переменные с фиксированной структурой, а связи между ними – с помощью динамических указателей. Ссылка на пустое поддерево обозначается, через Nil.