*) const; // Обход дерева
preorder(Node*) const; // Обход дерева
postorder(Node*) const; // Обход дерева
clear(Node*&); // Удаляет все узлы дерева
и устанавливает указатель root в NULL.
void delete(Node*&, const T&);
108
void deleteNode(Node*&);
void insert(Node*&, const T&);
};
Контрольные вопросы
1. Что такое абстрактная структура данных?
2. Что такое бинарное поисковое дерево?
3. Основные свойства и способы построения структуры данных
бинарное поисковое дерево?
4. Напишите алгоритм основных операций для структуры данных
бинарное поисковое дерево?
5. В каком порядке посещаются узлы бинарного дерева в случае:
симметричного обхода – inorder traversal;
обхода в прямом порядке (в ширину)– preorder traversal;
обхода в обратном порядке (в глубину)– postorder traversal.
ПРАКТИЧЕСКИЕ ЗАДАНИЯ
Задание 1
Используя абстрактную структуру данных БИНАРНОЕ ДЕРЕВО,
реализовать свой вариант Задания №1 из Лабораторной работы №3.
Приложение должно обеспечивать диалог с помощью меню и контроль
ошибок при вводе. Определить ключевое поле, по которому будет
происходить упорядочивание бинарного дерева. Обеспечить возможность
ПОИСКА данных по ключевому полю.
Задание 2
Используя абстрактную структуру данных БИНАРНОЕ ДЕРЕВО,
разработать и реализовать ДЕРЕВО РЕШЕНИЙ для какой-либо задачи из
повседневной жизни (выдача кредита, страхование имущества,
диагностика заболевания и т.п.) по следующему принципу:
109
ДА
Вопрос ?
НЕТ
Вопрос ?
НЕТ
ДА
Вопрос ?
Решение1
ДА
Вопрос ?
ДА
НЕТ
НЕТ
Требования:
1. дерево должно иметь не менее 4-х уровней;
2. программа должна обеспечить диалог, с помощью которого
пользователь может отвечать на вопросы;
3. после окончания опроса (достижения какого-либо решения),
программа выводит в консоль решение и ответы, данные
пользователем во время опроса.
Задание 3
Используя абстрактную структуру данных БИНАРНОЕ ДЕРЕВО,
разработать калькулятор, вычисляющий арифметические выражения из 4-х
основных действий и скобок, записанные в постфиксной форме (postfix
notation), используя подходящий порядок обхода и следующие правила:
1. дерево состоит только из узлов, у которых ровно 2 ребёнка
и листьев;
2. листьям дерева соответствуют операнды – числа;
3. остальным узлам соответствуют бинарные операции –
действия над 2-мя числами.
Например,выражению3 13 / 9 52 3 7 4 6
соответствует дерево
110
—
/
*
+
3
1
3
—
+
2
3
*
—
+
6
9
5
7
4
111
ПРИЛОЖЕНИЕ 2
Белорусский государственный университет
УТВЕРЖДАЮ
Декан гуманитарного факультета
________________ В.Е. Гурский
(подпись)
____________________
(дата утверждения)
Регистрационный № УД-______/р.
Алгоритмы и структуры данных
Учебная программа учреждения высшего образования
по учебной дисциплине:1-31 03 07-03
для специальности: Прикладная информатика
Факультет Гуманитарный
Кафедра
Информационных технологий
Курс (курсы) 1
Семестр (семестры) 2
Лекции 34
Практические (семинарские)
занятия
Лабораторные
занятия 34
Аудиторных часов по
учебной дисциплине 68
Всего часов по
учебной дисциплине 158
Экзамен 2
Зачет
Курсовая работа (проект)
Форма получения
высшего образования очное
Составил(а) А.В. Овсянников, кандидат технических наук, доцент
2013 г.
112
Учебная программа составлена на основе типовой учебной программы
«Алгоритмы и структуры данных» Регистрационный номер №ТД – G 278/тип,
дата утверждения 16.06.2010
Рассмотрена и рекомендована к утверждению кафедрой
Информационных технологий
____________________
(дата, номер протокола)
Заведующий кафедрой
________________ В.А. Нифагин
(подпись)
Одобрена и рекомендована к утверждению Научно-методическим советом1
Гуманитарного факультета БГУ
28.06.2013 г. №9
Председатель
________________ О.В.Немкович
(подпись)
Учебная программа может быть рекомендована к утверждению Советом факультета или методической
комиссией факультета, или общеуниверситетской (общеакадемической) кафедрой.
1
113
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
Учебная программа «Алгоритмы и структуры данных» разработана для
специальности 1-31 03 07-03 «Прикладная информатика» высших учебных
заведений.
Дисциплина «Алгоритмы и структуры данных» знакомит студентов с
фундаментальными понятиями, используемыми при разработке алгоритмов и
оценке их трудоемкости.
Цель дисциплины - изучение подходов к разработке эффективных
алгоритмов для разнообразных задач дискретной и комбинаторной
оптимизации.
Задачи дисциплины - выработать навыки по оценке трудоемкости
алгоритмов и по применению современных структур данных для эффективной
реализации различных базовых операций.
В курсе рассматриваются такие фундаментальные понятия как
информация, размерность задачи и трудоемкость алгоритмов. Особое
внимание уделено способам определения трудоемкости алгоритмов с
помощью таких методов, как составление и решение рекуррентных
уравнений. Наряду с классическим подходом оценки трудоемкости
рассматриваются также способы определения усредненной оценки
трудоемкости алгоритма для группы операций.
Основой для дисциплины «Алгоритмы и структуры данных» являются
следующие дисциплины: «Дискретная математика и математическая логика»,
«Теория вероятностей и математическая статистика», «Программирование».
Изучение курса позволяет дать студентам базу, необходимую для успешного
усвоения материала, а также получить знания, необходимые им в дальнейшем
для успешной работы при разработке эффективных алгоритмов,
В результате изучения дисциплины студент должен
знать:
понятие размерности задачи и трудоемкости алгорнма;
основные приемы разработки эффективных алгоритмов: динамическое
программирование и метод «разделяй и властвуй»;
основные структуры данных и трудоемкость базовых операций для
них;
виды поисковых деревьев:
основные алгоритмы поиска на графах и их трудоемкость; уметь:
определять трудоемкость основных алгоритмов поиска и внутренней
сортировки. используя технику рекуррентных соотношений:
осуществлять выбор структуры данных для разработки эффективного
алгоритма решения задачи;
реализовывать поисковые деревья:
реализовывать основные алгоритмы поиска на графах.
уметь:
определять трудоемкость основных алгоритмов поиска и внутренней
сортировки, используя технику рекуррентных соотношений;
114
осуществлять выбор структуры данных для разработки эффективного
алгоритма решения задачи;
реализовывать поисковые деревья;
реализовывать основные алгоритмы поиска на графах.
Учебная программа предусматривает для изучения дисциплины 158
часов, в том числе 68 аудиторных часов: лекции - 34 часа, лабораторные
занятия - 34 часа.
СОДЕРЖАНИЕ УЧЕБНОГО МАТЕРИАЛА
Тема 1
Понятие структуры данных и алгоритмов.
Определение алгоритма. Формальные свойства алгоритмов. Понятие
структуры данных. Классификация структур данных. Операции над
структурами данных. Структурность данных и технология программирования.
Тема 2
Абстрактные вычислительные машины.
МашинаПоста.Маши́наТьюринга,детерминированнаяи
́
недетерминированная машина Тьюринга. Вероятностная машина Тьюринга.
Тема 3
Анализ алгоритмов.