Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Представление выражений с помощью деревьев↑ ⇐ ПредыдущаяСтр 8 из 8 Содержание книги Похожие статьи вашей тематики
Поиск на нашем сайте
С помощью деревьев можно представлять произвольные арифметические выражения. Каждому листу в таком дереве соответствует операнд, а каждому родительскому узлу операция. В общем случае дерево при этом может оказаться не бинарным (см. рис.7).
Рис.7. Представление арифметического выражения произвольного вида в виде дерева.
Однако если число операндов любой операции будет меньше или равно двум, то дерево будет бинарным. Причем если все операции будут иметь два операнда, то дерево окажется строго бинарным (см. рис.8).
Рис. 8. Представление арифметического выражения в виде бинарного дерева
Бинарные деревья могут быть использованы не только для представления выражений, но и для их вычисления. Для того чтобы выражение можно было вычислить, в листьях записываются значения операндов. Затем от листьев к корню производится выполнение операций. В процессе выполнения в узел операции записывается результат ее выполнения. В конце вычислений в корень будет записано значение, которое и будет являться результатом вычисления выражения (см. рис.9).
Рис.9. Вычисление арифметического выражения с помощью бинарного дерева Помимо арифметических выражений с помощью деревьев можно представлять выражения других типов. Примером являются логические выражения. Поскольку функции алгебры логики определены над двумя или одним операндом, то дерево для представления логического выражения будет бинарным (см. рис.10). Рис. 10. Представление логического выражения в виде бинарного дерева Контрольные вопросы
1) Понятие дерева, двоичного дерева, упорядоченного дерева, дерева поиска. 2) Способы задания дерева. 3) Способы обхода дерева (в глубину: прямой, обратный, симметричный; в ширину). 4) Показать, что бинарное дерево можно построить, если заданы прямой и обратный порядки расположения его узлов. Можно ли это сделать, если заданы прямой и концевой порядки? Если заданы обратный и симметричный порядки? 5) Найдите все бинарные деревья, узлы которых располагаются точно в одной и той же последовательности а) в прямом и обратном порядках; б) в прямом и симметричном порядках; в) в обратном и симметричном порядках. 6) Каково наибольшее число вершин, находящихся одновременно в стеке при обходе двоичного дерева, содержащего n элементов: а) в прямом, б) обратном, в) симметричном порядках? Задания для практической работы
Во всех задачах тип значений элементов дерева простой. Исходное дерево после ввода распечатать в одном из порядков.
2. В заданном бинарном дереве подсчитать число его листьев и напечатать их значения при обратном обходе дерева. 3. В заданном бинарном дереве подсчитать число его листьев и напечатать их значения при концевом обходе дерева. 4. В заданном бинарном дереве подсчитать число его листьев и напечатать их значения реализуя обход, рекурсивно. 5. В заданном бинарном дереве найти первое вхождение заданного элемента и напечатать пройденные при поиске узлы дерева при прямом обходе дерева. 6. В заданном бинарном дереве найти первое вхождение заданного элемента и напечатать пройденные при поиске узлы дерева при обратном обходе дерева. 7. В заданном бинарном дереве найти первое вхождение заданного элемента и напечатать пройденные при поиске узлы дерева при концевом обходе дерева. 8. В заданном бинарном дереве найти первое вхождение заданного элемента и напечатать пройденные при поиске узлы дерева реализуя обход, рекурсивно. 9. В заданном непустом бинарном дереве найти длину (число ветвей) пути от корня до ближайшей вершины со значением равным заданному при прямом обходе дерева; 10. В заданном непустом бинарном дереве найти длину (число ветвей) пути от корня до ближайшей вершины со значением равным заданному реализуя обход, рекурсивно. 11. В заданном непустом бинарном дереве подсчитать число вершин на n- ом уровне, считая корень вершиной 0-го уровня. 12. Задано бинарное дерево. Определить, есть ли в этом дереве хотя бы два одинаковых элемента. 13. Распечатать все элементы заданного непустого бинарного дерева по уровням: сначала из корня дерева, затем (слева направо) из вершин, дочерних по отношению к корню, затем (слева направо) из вершин, дочерних по отношению к этим вершинам, и т.д. 14. Формулу вида: < формула >::= < терминал >|(< формула > < знак > < формула >) < знак >::= + | - | * < терминал >::= 0|1|2|3|4|5|6|7|8|9 можно представить в виде двоичного дерева (‘дерева – формулы ‘): - формула из одного терминала (цифры) представляется деревом из одной вершины (корнем) с этим терминалом; - формула вида (f1 s f2) - деревом, в котором корень – это знак s, а левое и правое поддеревья – это соответствующие представления f1 и f2: а) по заданной формуле построить дерево – формулу, обходя дерево – формулу в 1)прямом, 2)обратном, 3)концевом порядке, напечатать его элементы и вычислить (как целое число) значение; б) проверить, является ли заданное двоичное дерево (с элементами типа char) деревом – формулой и напечатать его элементы в порядке 1)прямого, 2)обратного, 3)концевого обхода; в) пусть в дереве – формуле в качестве терминалов используются не только цифры, но и буквы, играющие роль переменных; преобразовать заданное дерево – формулу, заменяя в нем все поддеревья, соответствующие формулам ((f1 ± f2) * f3) и(f1 *(f2 ± f3)) на поддеревья, соответствующие формулам ((f1 * f3) ± (f2 * f3)) и ((f1 * f2) ± (f1 * f3)); распечатать преобразованное дерево в 1)прямом, 2)обратном, 3)концевом порядке; г) выполнить в заданном дереве – формуле преобразования, обратные преобразованиям из пункта в; распечатать преобразованное дерево в 1)прямом, 2)обратном, 3)концевом порядке. 15. Заданную последовательность из строчных латинских букв, оканчивающуюся точкой, представить в виде дерева поиска, затем преобразовать его, удалив символ с наименьшим значением. Распечатать преобразованное дерево в 1)прямом, 2)обратном, 3)концевом порядке. 16. Заданную последовательность из строчных латинских букв, оканчивающуюся точкой, представить в виде дерева поиска, затем преобразовать его, удалив символ с наибольшим значением. Распечатать преобразованное дерево в 1)прямом, 2)обратном, 3)концевом порядке. 17. Заданную последовательность целых чисел, оканчивающуюся нулем, представить в виде дерева поиска, затем преобразовать его, добавив еще одно целое число; распечатать преобразованное дерево в 1)прямом, 2)обратном, 3)концевом порядке. Литература
1. Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы. – М.:Вильямс, 2000. – 382 с. 2. Вирт Н. Алгоритмы и структуры данных: Пер. с англ. — 2-е изд. испр. - СПб.: Невский Диалект, 2001. -352 с. 3. Грэхем Р., Кнут Д., Паташник О. Конкретная математика. Основание информатики: Пер. с англ. — М.: Мир, 1998, —703с. 4. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. М.: МЦНМО, 2001 — 960 с. 5. Кнут Д. Искусство программирования. Т.1. – М.: Вильямс, 2000 – 690с. 6. Кнут Д. Искусство программирования. Т.2. – М.: Вильямс, 2000 – 788с.
9. Липский В. Комбинаторика для программистов: Пер. с польск. М.: Мир, 1988. —213 с.
|
||||
Последнее изменение этой страницы: 2021-05-12; просмотров: 579; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.32.115 (0.009 с.) |