Содержание
- 2. Цель лекции Изучить теоретические основы двоичных деревьев поиска и очереди с приоритетами и алгоритмы их обработки
- 3. Постановка задачи Реализовать структуру данных, хранящую набор чисел и поддерживающую операции: добавить число найти число удалить
- 4. Двоичное дерево Дерево, каждая вершина которого имеет не более двух детей На детях каждой вершины задан
- 5. Двоичное дерево поиска Это двоичное дерево, в каждой вершине которого хранится число При этом если в
- 6. Дерево поиска неоднозначно Набор чисел: 1, 3, 10, 23, 50 Высота есть O(logn) Высота есть O(n)
- 7. Вершина дерева node = record data : integer; left, right : integer; // при реализации //
- 8. Поиск элемента в дереве Если значение y в текущей вершине равно искомому x, то поиск завершен
- 9. Программа function find(x : integer) : boolean; begin cur := root; // root – корень дерева
- 10. Поиск минимума и максимума Минимум – самый левый элемент в дереве Максимум – самый правый элемент
- 11. Добавить число Необходимо: Найти место, в котором должно находиться число Создать новый узел дерева и поместить
- 12. Программа (1) function add(root, x : integer) : integer; begin if (root = -1) then begin
- 13. Программа (2) if (x cur := add(memory[root].left, x); memory[root].left := cur; result := root; exit; end;
- 14. Вызов процедуры root := add(root, x); Здесь root – это корень дерева.
- 15. Удаление элемента Необходимо найти элемент Три случая: вершина является листом – просто удаляем у вершины один
- 16. Третий случай Необходимо найти минимальную вершину в правом поддереве и переместить ее на место удаляемой Проблем
- 17. Время работы операций Время работы всех рассмотренных операций пропорционально высоте дерева – в худшем случае есть
- 18. Упражнение Предложить алгоритм нахождения следующего и предыдущего элемента в двоичном дереве поиска со временем работы пропорциональным
- 19. Поиск k-ой порядковой статистики В каждом узле дерева необходимо хранить дополнительную информацию – число узлов в
- 20. Поиск k-ого элемента Дано: Корень дерева Число k Если в левом поддереве не меньше, чем k
- 21. Программа function getKth(root, k : integer) : integer; begin sizeLeft := 0; if (memory[root].left -1) then
- 22. Упражнение Модифицировать операции добавления и удаления вершины, так чтобы они обновляли значения поля «размер поддерева». Время
- 23. Деревья выражений (5+2)*3 – (1 + 2/3)
- 24. Обходы двоичных деревьев Основные варианты обхода двоичного дерева: корень – левое поддерево – правое поддерево левое
- 25. Примеры - * + 5 2 3 + 1 / 2 3 5 + 2 *
- 26. Упражнения Предложить алгоритм вычисления выражений, заданных в постфиксной записи (указание: используйте стек) Применение какого из обходов
- 27. Очередь с приоритетами Структура данных с двумя операциями: добавить элемент и назначить ему приоритет извлечь элемент
- 28. Простая реализация Храним массив записей element = record data, priority : integer; end; Добавление – в
- 29. Структура данных «куча» Полное двоичное дерево Хранится в массиве: Левый ребенок – 2 * i Правый
- 30. Пример
- 31. Добавление элемента (1) Добавим в конец массива После этого основное свойство кучи может быть нарушено
- 32. Добавление элемента (2) Необходимо восстановить нарушенное основное свойство Для этого выполним просеивание вверх – будем поднимать
- 33. Добавление элемента (3) Число обменов не превышает высоту дерева – то есть O(logn)
- 34. Добавление элемента (4) procedure add(x : integer); begin inc(size); heap[size] := x; i := size; while
- 35. Извлечение элемента (1) Минимальный элемент находится на вершине кучи Поменяем его местами с последним и удалим
- 36. Извлечение элемента (2) Было Стало Необходимо поместить верхний элемент на его место!
- 37. Извлечение элемента (3)
- 38. Извлечение элемента (4)
- 39. Извлечение элемента (5)
- 40. Извлечение элемента (5) function remove() : integer; begin result := heap[1]; heap[1] := heap[size]; dec(size); i
- 41. Сортировка с помощью кучи Можно добавить все элементы массива в кучу, а потом по очереди извлечь
- 42. Построение кучи из массива for i := n div 2 downto 1 do begin siftDown(i); end;
- 43. Время работы Грубая оценка – O(nlogn) Более точная оценка – O(n)
- 44. Построение упорядоченного массива из кучи for j := 1 to n do begin swap(heap[1], heap[size]); dec(size);
- 45. Время работы heapSort Общее время работы heapSort есть O(n + nlogn) = O(nlogn)
- 46. Выводы Двоичные деревья поиска позволяют быстро выполнять словарные операции при условии, что у них небольшая высота
- 48. Скачать презентацию











![Программа (2) if (x cur := add(memory[root].left, x); memory[root].left := cur; result](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388267/slide-12.jpg)




















![Добавление элемента (4) procedure add(x : integer); begin inc(size); heap[size] := x;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388267/slide-33.jpg)





![Извлечение элемента (5) function remove() : integer; begin result := heap[1]; heap[1]](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388267/slide-39.jpg)






ДУХОВНАЯ ЖИЗНЬ ОБЩЕСТВА 20 -Х ГГ
Жемчуг
Типы рекламы
PR в интернет Необходимые компетенции PR-специалиста Артем Герасимович, it-job.by, LSPR Minsk
Характеристика административно-производственного здания ОАО НПП «Адонис» и холодного склада «Плауна»
Ассоциация, как помощник, при изучении математики
Обеспечение образовательного процесса в первом классе программами, учебниками, наглядными пособиями по УМК «Школа России» в рам
А.Невский
Характеристика внеурочных форм занятий
Как сегодня мы живем
ПЕРВЫЕ РУССКИЕ КНЯЗЬЯ
Правила написания приставок
Титов Герман Степанович
Презентация на тему День Республики Крым. Государственная символика Республики Крым
ТВОРЧЕСТВО ДЕТЕЙ ПОДЕЛКИ НА КОНКУРС «Зеркало природы»
My visit to the pension fund
Презентация на тему Биологические ресурсы мира
Форма государства
Производство обжаренного кофе «Кофе Хауз»
Природные зоны Северной Америки
Программа Intel «Обучение для будущего»
Внедрение ГШИС и КМИС КУ в образовательном учреждении
Нумерация. Счёт предметов. Разряды
بسم الله الرحمن الرحیم
В гостях у Смешариков
Кукла из фетра
Браузер- окно в мир Internet
Как обмануть погоду