Деревья курс «Алгоритмы и структуры данных» Отделение Программной инженерии.

Slides:



Advertisements
Similar presentations
EXtreme Programming XP Тема 3. XP Пусть есть некоторая информационная система для банков. В качестве основной валюты для расчетов используется доллар,
Advertisements

ООП Классы. Данные отдельно, методы отдельно struct Node { Node* next; void* data; }; struct List { Node* first; int size; }; void* allocate() { … } void.
Деревья (trees) «…великое Дерево Жизни заполняет земную кору своими мертвыми и сломанными ветвями и покрывает поверхность вечно ветвящимися и прекрасными.
Астрометрические каталоги К.В.Куимов, ГАИШ МГУ. Определение астрометрического каталога Астрометрический каталог – понятие неопределённое. Например, это.
Linguistic tools Лекция 5. ПОИСКОВЫЕ СИСТЕМЫ: предыстория Библейские индексы и конкордансы 1247 – Hugo de St. Caro – было задействовано 500 монахов для.
Системы с наследованием. Если систему можно представить в виде : Где - непрерывные функции, то такая система называется системой с наследованием. Математическое.
Системы отбора. Условные обозначения (1) (2) (3) (4) (5) (6) (7) Математическое моделирование процессов отбора2.
R1R2R3R4R5R6R7R1R2R3R4R5R6R7. Аксиома R 1. В пространстве существуют плоскости. В каждой плоскости пространства выполняются все аксиомы планиметрии.
с использованием многокритериальных оценок
Вэйвлетное разложение гладкого потока ненулевой высоты Выполнил : Суханов Василий Научный руководитель : Демьянович Ю. К. Рецензент : Лебединская Н. А.
Некомпенсаторное агрегирование и рейтингование студентов Авторы: Гончаров Алексей Александрович, Чистяков Вячеслав Васильевич. НФ ГУ ВШЭ 2010 год.
Всевоволод Головизнин, MVC – паттерн проектирование, в котором бизнес - логика, управляющая логика и интерфейс разделены на три отдельных компонента.
Учитель математики Кулакова Т.М. МОУ ООШ №15 г.о Новокуйбышевск Самарской области Сентябрь 2011г.
Скриптовые языки на примере Perl. Языки программирования Скриптовые Программа (или ее бай-код) интерпретируется Зачастую более высокий уровень абстрагирования.
ООП Классы – 2. Ссылки Ссылка – еще одно имя объекта. Используйте ссылки вместо указателя. Это более безопасно. Complex c(10,10); Complex c2& = c; c2+=10;
Алгоритмы на графах Представление графов Построение остовного дерева Нахождение компонент смежности Перебор в глубину и в ширину.
Блок 3. Семейства белков I. Множественное выравнивание Первый курс, весна 2008, А.Б.Рахманинова.
Язык JavaScript Скриптовый язык для выполнения на html-страницах.
To the Solution of a Bilinear Optimal Control Problem with State Constrains by the Doubled-Variations Method E.A. Rovenskaya Lomonosov Moscow State University,
Генетика пола, сцепленное с полом наследование.. Мужские и женские особи отличаются наличием половых хромосом. У человека: Женский пол – гомогаметен,
1 Генерация контекстных ограничений для баз данных Выполнил: Жолудев В. Научный руководитель: Терехов А.Н. Рецензент: Иванов А.Н.
Введение в параллельные вычисления. Технология программирования MPI (день седьмой) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Введение в параллельные вычисления. Технология программирования MPI (день третий) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Инструменты AdWords Анна Минчук cертифицированный консультант по Google AdWords.
Основы цифровой обработки речевых сигналов. Общая схема процесса речеобразования x[n] – дискретные отсчеты сигнала возбуждения y[n] – дискретные отсчеты.
ГРАФЫ ИХ ПРЕДСТАВЛЕНИЕ В STL u Отделение программной инженерии группа 271 ПИ Антонова Н. А.
Growing Neural Gas Method Нейросетевой метод построения неструктурированных адаптивных сеток.
Алгоритмы сортировки и поиска
Сравнение различных методов хранения XML в реляционных базах данных и в разных системах. Нгуен Тхань Хуен- 545 группа Руководитель : Б.А. Новиков Рецензент:
Лекция 2 Наборы из нулей и единиц
PHP как язык программирования. Типы данных логические величины int, integer – целые числа real, double, float – вещественные числа string – строки array.
Введение в параллельные вычисления. Технология программирования MPI (день второй) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Деревья (trees) «…великое Дерево Жизни заполняет земную кору своими мертвыми и сломанными ветвями и покрывает поверхность вечно ветвящимися и прекрасными.
"The European Molecular Biology Open Software Suite"
Формантный синтезатор речи. Часть 1. Полюсы и нули – иное понимание Полюс – это пара чисел (B, F), B – ширина форманты, F – частота форманты Нуль – это.
Рекурсивные структуры данных Списки, двоичные деревья.
EDCWiki Electronic Document Circulation using wiki Система электронного документооборота на основе wiki Участники: Кузьмин К.А., Цыцулин В. И. Руководитель:
Контейнеры. Сортировка  Метод sort()  Интерфейс Comparable метод int compareTo(Object o) вызов: Arrays.sort(a)  Интерфейс Comparator метод int compare(Object.
1 Влияние машинной архитектуры Структура и принципы работы компьютера На разрабатываемый язык программирования машинная архитектура влияет двояко: –непосредственно.
ВЫЧИСЛЕНИЕ В ЛИСПЕ Функциональное программирование Григорьева И.В.
Деревья и их представление в STL Презентацию подготовила Чиркова Ольга, 2 подгруппа, группа 271ПИ.
Синтаксис языка Java.
Особенности языка JavaScript и его использования.
Реализация XPath над S-выражениями 2007 Миленин Евгений, гр. 544 Кафедра Системного Программирования Математико-Механический ф-т, СПбГУ Научный руководитель:
Маршрут, цепь, цикл Маршрутом называют последовательность вершин и ребер, в которой любые два соседних элемента инцидентны (т.е. соединены). Например:
Формы в HTML. Элемент FORM Элемент уровня «блок» Управляющие элементы Просто текст Атрибуты: action – url обработчика method – post или get enctype –
Деревья (trees) «…великое Дерево Жизни заполняет земную кору своими мертвыми и сломанными ветвями и покрывает поверхность вечно ветвящимися и прекрасными.
Применение генетических алгоритмов для генерации тестов к олимпиадным задачам по программированию Буздалов М.В., СПбГУ ИТМО.
Демидов А.В г. Операционные системы Лекция 4 Работа с файлами.
Обработка исключений Гудов А.М., Завозкин С.Ю
0 + 0= = = = 10 Арифметические операции во всех позиционных системах счисления выполняются по одним и тем же хорошо известным вам правилам.
XML - расширенный язык разметки Моисеевой О. Макушиной Д. (eXtensible Markup Language)
LINGUISTIC TOOLS ЛИНГВИСТИЧЕСКИЕ ИНСТРУМЕНТЫ Лекция 1.
TMG Tel: 8 (495) Fax: 8 (477) Technology Management Group ООО «TMG» PayKeeper.
Классификация, кластеризация и поиск изображений на основе низкоуровневых характеристик Наталья Васильева Руководитель: Новиков Б. А.
XML Схемы XML документов. XML Schema созданая Microsoft позволяет избавиться от DTD блоков. Основа – использование пространств имен и очень точная типизация.
Введение в параллельные вычисления. Технология программирования MPI (день четвертый) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Board Games. KnowWant to knowLearnt jigsawpuzzle adominoesyrw cfeukoloased hdscrabbleja eetashiefyjr sfmarblesaet sokbilliards ybackgammonu.
КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ Metro приложения: работа с данными Краковецкий Александр, MVP/RD/PhD. DevRain Solutions.
Человеко-машинное взаимодействие Лекция 6 Мерзлякова Екатерина Юрьевна к.т.н. доцент ПМиК.
Anekdot ANDROID CLUB Сегодня  Navigation Drawer  CardView  Calligraphy  TextToSpeech.
Применение графического метода для решения различных математических задач Учитель гимназии №3 Шахова Т. А.
Стеки и очереди 1. Абстрактный стек public interface Stack { static class Underflow extends Exception { public Underflow() { super("Stack underflow");
Welcome Travelling to English Land Rules. ABCDEFG Board Game.
«Центр Разработки и Внедрения Террасофт Поволжье»
Jokes Jokes Jokes Teacher: Where's your text book? Student: At home. Teacher: What's it doing there? Student: Having a.
JavaScript
Общая характеристика семейства Семейство Крестоцветные включает около 4 тысяч видов. По-другому семейство Крестоцветные называют семейством Капустные.
Решение типовых расчетных задач по формулам. Определение массовой доли элементов Массовая доля элемента ω(Э) % - это отношение массы данного элемента.
Сортировка, поиск и фильтрация данных в базе данных и выборках
Presentation transcript:

Деревья курс «Алгоритмы и структуры данных» Отделение Программной инженерии

Что такое дерево Связный неориентированный граф, не имеющий циклов Структура данных, позволяющая выполнять операции вставки, удаления, поиска элементов за нелинейное время

Применение деревьев каталоги книжных интернет- магазинов представление файловых систем алгоритмы сжатия файлов реализации компиляторов

Свойства дерева дерево состоит из совокупности узлов кореньтолько один узел не имеет предков: это корень дерева только одноголюбой другой узел имеет только одного предка из любого узла можно попасть в корень, постоянно двигаясь от узла к его предку

Свойства дерева листьяузлы, не имеющие потомков – листья высота дерева количество уровней в дереве,высота дерева – это количество уровней в дереве, включая корень (то есть количество узлов в самой длинной цепочке от корня до листа)

Типы деревьев дерево общего вида (количество дочерних узлов для каждого узла не ограничено) бинарное бинарное дерево (количество дочерних узлов для каждого узла равно двум)

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

Двоичные деревья поиска Содержат элементы в отсортированном порядке, благодаря чему легко осуществляется поиск по дереву Несбалансированное двоичное дерево поиска - это дерево, в котором листья находятся не на одном уровне. левоеправоеОно имеет левое и правое поддеревья, высота которых различается на несколько уровней

незавершенным Двоичное дерево поиска называется незавершенным, если один или несколько его узлов имеют один дочерний узел Двоичные деревья поиска

Использование деревьев в STL

рекурсию. Процедура поиска нужного значения представляет собой рекурсию. рекурсивный вызов В случае, если входной параметр (текущая вершина) не совпадает с искомым значением (искомой вершиной), происходит рекурсивный вызов процедуры с параметром - корнем соответствующего поддерева: либо большего, либо меньшего. Если такое поддерево не найдено, то искомое значение не содержится в дереве. Использование двоичных деревьев поиска

template const T* const BSTree ::search_helper(BSTNode *nodep, const T &x) { if (nodep == 0) { return NULL; } if (x == nodep->data) { return &(nodep->data); } if (x data) { return search_helper(nodep->left, x); } else { return search_helper(nodep->right, x); } Использование двоичных деревьев поиска

Контейнер «множество» хранит уникальные упорядоченные элементы. Добавление и удаление элементов, доступ к ним выполняется за логарифмическое время. Добавление отсортированных элементов не сократит время до линейного. Множества

Множества Объявление множества set s1; set s2; Добавление элементов в существующее множество for (int i = 0; i < 20; i++) { s1.insert(i); s2.insert(30 - i); }

Множества Реализация функции поиска во множестве: if (s1.find(10) != s1.end()) { cout << "s1 contains 10\n"; } Функция возвращает итератор найденного элемента (если элемент не найден, то возвращается итератор конца множества)

Карты Контейнер «карта» - это ассоциативная структура данных, которая хранит элементы по парам «ключ - значение». Структура называется ассоциативной, так как ставит в соответствие один элемент данных (ключ) другому элементу данных (значению). Ключ должен быть уникальным (то есть соответствовать только одному значению)

Карты Объявление карты, имеющей строковый тип ключа и значения map m1; Добавление элементов в карту m1.insert(pair ("apple", "a small red fruit")); m1.insert(pair ("orange", "a small orange fruit"));

Карты Другой способ добавления элементов в карту m1[“apple”] = “a small red fruit”; m1[“banana”] = “a long yellow fruit”; Доступ к элементам по ключу в карте: cout << m1[“apple”] << endl; cout << m1[“banana”] << endl; Реализация итератора для просмотра элементов: map ::iterator it = m1.begin(); for ( ; it != m1.end(); it++) { cout first second << endl; }

Очереди приоритета Очереди приоритета похожи по поведению на обычные очереди. Очередь приоритета предоставляет доступ только к элементу с высшим приоритетом. Определение относительного приоритета элементов осуществляется при помощи оператора сравнения (<)

Очереди приоритета priority_queue pq; pq.push(1); pq.push(4); pq.push(2); cout << pq.top() << endl; // outputs '4' pq.pop(); cout << pq.top() << endl; // outputs '2' pq.pop(); cout << pq.top() << endl; // outputs '1' В некоторых типах (например, int) операция сравнения определена по умолчанию Если операция сравнения не определена (например, для типа string), то программист определяет ее самостоятельно