Деревья Лекция 9. План Принадлежность значения дереву Замена в дереве всех вхождений одного значения на другое Подсчет общего количества вершин дерева.

Презентация:



Advertisements
Похожие презентации
Списки на Прологе (часть 2) Лекция 7. План Сумма, среднее арифметическое элементов списка, поиск минимального значения Сортировка списка (простого обмена,
Advertisements

Строки Лекция 10. План Стандартные предикаты по работе со строками Преобразование строки в список символов Преобразование списка символов в строку Количество.
Списки на Прологе Лекция 6. План 1.Метод поиска в глубину 2.Метод отката после неудачи 3.Отсечение и откат 4.Метод поиска, определяемый пользователем.
Логическое программировыание Презентация 5 Списки в Прологе.
Списки в языке Пролог. Определение Список упорядоченное множество объектов одинакового типа. Формально это определение соответствует определению массива.
Древовидная модель оказывается довольно эффективной для представления динамических данных с целью быстрого поиска информации. Деревья являются одними из.
Множества Лекция 8. План Создание множества Операции со множествами (объединение, пересечение, разность, проверка включения, симметрическая разность,
Лекция 8 Красно-черные деревья План лекции 1.Определение красно-черного дерева и его высота. 2.Вращения 3.Вставка элемента, восстановление структуры дерева.
Массивы Вариант 1 Program upr1; Var s,a:real; I: integer; Begin S:=0; For I:=1 to 10 do Begin Writeln (введите очередное число'); Readln(a); S: =s+a; End;
1 Эффективность рекурсивных функций. Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования. -- Вычисление.
Основы алгоритмизации и программирования Лекция 2. А.Ф.ОСЬКИН ПГУ, Полоцк.
Тема: Нахождение минимального и максимального элемента в массиве.
Деревья и их представление в STL Презентацию подготовила Чиркова Ольга, 2 подгруппа, группа 271ПИ.
Одномерные массивы Понятие массива, виды массивов Описание, заполнение и вывод одномерного массива Обработка одномерного массива.
«Богатство ума не в обладании огромными знаниями, а в умении ими пользоваться» Спиноза.
Массивы Массив это величины объединенные общим именем и различаемые порядковыми номерами. Номера называются индексами. В зависимости от количества индексов.
Разбор заданий ЕГЭ Типичные задания С2. Содержание Перечень задач Задача 1 Задача 2 Задача 3 Решить самостоятельно Задача 4 Задача 5 Задача 6 Перечень.
СУБД Access Запросы Автор: Тутыгин В.С.. Назначение запросов Запросы обеспечивают простой доступ к определенному подмножеству записей одной или нескольких.
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
Использование STL. Преимущества STL увеличение скорости написания программ гарантированное отсутствие ошибок универсальность (независимость от типов данных)
Транксрипт:

Деревья Лекция 9

План Принадлежность значения дереву Замена в дереве всех вхождений одного значения на другое Подсчет общего количества вершин дерева Подсчет количества листьев дерева Сумма чисел, расположенных в вершинах дерева Вычисление высоты дерева Проверка принадлежности значения двоичному справочнику Добавление в двоичный справочник нового значения Алгоритм, генерирующий дерево, которое является двоичным справочником и состоит из заданного количества вершин, в которых будут размещены случайные целые числа Удаление заданного значения из двоичного справочника Преобразование произвольного списка в двоичный справочник «Сворачивание» двоичного справочника в список с сохранением порядка элементов

Принадлежность значения дереву DOMAINS tree=empty;tr(i,tree,tree) CLAUSES tree_member(X,tr(X,_,_)):–!. tree_member(X,tr(_,L,_)):– tree_member(X,L),!. tree_member(X,tr(_,_,R)):– tree_member(X,R).

Замена в дереве всех вхождений одного значения на другое tree_replace(_,_,empty,empty). tree_replace(X,Y,tr(X,L,R),tr(Y,L1,R1)):– !, tree_replace(X,Y,L,L1), tree_replace(X,Y,R,R1). tree_replace(X,Y,tr(K,L,R),tr(K,L1,R1)):– tree_replace(X,Y,L,L1), tree_replace(X,Y,R,R1).

Подсчет общего количества вершин дерева tree_length (empty,0). tree_length(tr(_,L,R),N):– tree_length (L,N1), tree_length (R,N2), N=N1+N2+1.

Подсчет количества листьев дерева tree_leaves(empty,0). tree_leaves(tr(_,empty,empty),1):–!. tree_leaves(tr(_,L,R),N):– tree_leaves(L,N1), tree_leaves(R,N2), N=N1+N2.

Сумма чисел, расположенных в вершинах дерева tree_sum (empty,0). tree_sum(tr(X,L,R),N):– tree_sum (L,N1), tree_sum (R,N2), N=N1+N2+X.

Вычисление высоты дерева tree_height(empty,0). tree_height(tr(_,L,R),D) :– tree_height(L,D1), tree_height(R,D2), max(D1,D2,D_M), D=D_M+1.

Проверка принадлежности значения двоичному справочнику tree_member2(X,tr(X,_,_)):–!. tree_member2(X,tr(K,L,_)):– XK,!, tree_member2(X,R).

Добавление в двоичный справочник нового значения tree_insert(X,empty,tr(X,empty,empty)). tree_insert(X,tr(X,L,R),tr(X,L,R)):–!. tree_insert(X,tr(K,L,R),tr(K,L1,R)):– X

Генерация двоичного справочника со случайными числами tree_gen(0,empty):–!. tree_gen (N,T):– random(100,X), N1= N–1, tree_gen (N1,T1), tree_insert(X,T1,T).

Удаление заданного значения из двоичного справочника tree_del_min(tr(X,empty,R), R, X). tree_del_min(tr(K,L,R), tr(K,L1,R), X):– tree_del_min(L, L1, X). tree_delete(X,tr(X,empty,R), R):–!. tree_delete (X,tr(X,L,empty), L):–!. tree_delete (X,tr(X,L,R), tr(Y,L,R1)):– tree_del_min(R,R1, Y). tree_delete (X,tr(K,L,R), tr(K,L1,R)):– X

Преобразование произвольного списка в двоичный справочник list_tree([],empty). list_tree([H|T],Tr):– list_tree(T,Tr1), tree_insert(H,Tr1,Tr).

«Сворачивание» двоичного справочника в список с сохранением порядка элементов tree_list(empty,[]). tree_list(tr(K,L,R),S):– tree_list(L,T_L), tree_list(R,T_R), conc(T_L,[K|T_R],S).

Задача для самостоятельного решения Разработать предикат, который создает справочник из количества вершин, большего максимального значения, задаваемого в random. Разработать предикат, который создает двоичный справочник, состоящий ровно из заданного количества вершин. Разработать предикат, выполняющий сортировку списка (с помощью двоичного справочника)