Главная » Просмотр файлов » Лекции по информатике

Лекции по информатике (984119), страница 7

Файл №984119 Лекции по информатике (Лекции по информатике) 7 страницаЛекции по информатике (984119) страница 72015-07-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 7)

Эти способы определяютс с рекурсивно, При обходах выполняются следующие действия 144~; 1. при прямом обходе (КЛП, ргеогс1ег, корень прежде): (а) если дерево пусто, то конец обхода;. (Ь) берется корень; (с) выполняется обход левого полдерева; (сЦ выполняется обход правого поддерева. 2, при обратном обходе (ЛКП, 1погс1ег, корень между): (а) если дерево пусто, то конец обхода; (Ь) выполняется обход левого поддерева; (с) берется корень; (с1) вьпюлняется обход правого полдерева. 3.

при концевом обходе (ЛПК, ровгогс1ег, корень в конце): (а) если дерево пусто, .то конец обхода; (Ь) выполняется обход левого поддерева; (с) выполняется обход правого полдерева; (сЦ берется корень. Для примера дерева, приведенного ниже, при прямом обходе узлы буд,ут взяты в таком порядке: А, В, С, П, Е, Г, С', 11; при обратном обходе узлы будут взяты в таком порядке С, В, Е, Р, А, Г, Н, С; при концевом обходе узлы будут взяты в таком порядка: С, Е, Р, В, Н, С, 1г, А. При обходе деревьев могут использоваться либо рекурсивные процедуры, либо программы с циклом., зависящим от состояния стека.

в котором отражается текущее положение в дереве (Зб1 Нерекурсивный обход дерева с явным использованием стека аналогичен 1эекурсивггому ис1голненило гга внут!генном стеке среды языка, обеспечиваклщем 1лекурсиго. Наконец, существукгг такие способы представления деревьев, при которых возможен итеративный обход! Теперь нетрудно составить рекурсивные процедуры выполнения трех различных ме; тодов обхода двоичного дерева: ргосес1пге ргеогс1еф: р); Ьеиш И 1 <> ш1 ФЬеп Ьеиш 1' обработка вершины: 1".да1а г=- ... или итйе!'1 .доХа) лГ ргеогс1ег(с ".1); ргеогс1ег!г, .г) епс1 епс1; 1ргеогдег~ ргосес1пге !погс1еф: р); Ьеиш Ы с <> и!1 с1геп Ьеиш пгогс1ег (1 ". ! ); 1' обработка вершины л! !погс1ег($ .г) епс1 «с !'л 1ег) ргосес1пге роагогс!ег(г; р); Ьеиш К г <> ш1 йеп Ьеи1п роа$огс1ег(г .1); роагогс1ег!г".г) 1' обрабопгка верилины л! епс1 епс1; 1роз1огдеглГ Во всех трех рекурсивных процедурах ссылка на, текущий корень дерева передается по значению, и заносится при рекурсивном выполнении во временной стек экземпляров локальной переменной.

Нри обходе изменение значений этой переменной не ггроизводится. Нерекурсивпое выполнение процедуры обхода может быть поддержано рекурсивной структурой данных типа стек. ргосес1пге !гюгс1ег2(ггее: р) чаг з$: огас!с; !' о1 р1 указателей корневых узлов, для которых начат, но есце не завершен обход левого поддерева лГ с1опе: Ьоо1еап; Ьеиш Сгеа1е!зс); с1опе: -- Га1ве; гер еаза 1' Рассматриваемые вершины дерева заносятся в сгпек до гав пор, пока не 274 встретится першино, с пустым, левым. поддеревом (лллспл или ве1лиина только с правьлм >лоплоллкг>лл) 3 1Г(1гее <'> ш1) сЬеп Ьен1п Рпв1>(зс, Ггее); 1' Указатель текушего узла гломещаегпся в стек >Г ггее: — Ггсгл> .1; 1' Для глродолж:еглгля обхода выбирается, указатель но, левое поддерево >Л епс1 е1ве Ы(Егггрсу(зГ)) СЬеп ~с В стеке нет веригин для обхода >Л с1опс: — $гпе лг Ус>пп>лосзксл глрг знака завериления итератллвного обхода >л е1ве Ьеи1п 1' В стеке есть отлоэлсенньле вершиньл для обхода >Г ггее: Тор(зг); 1' Вълбираем для обхода родителя текущего узла, находящегося в стеке вслед за потомком >Г Рор(зь); 1 Указатель родителя текущего узла удаляетс.я из стека.

В результате этой операции в вершину стека поднимаегпея родитель удаленного узла >Л 1' Здесь могла бы быть обработка узла! >Л сгее: =- сгее .г1~1>1; 1' Переход к обходу правого поддерева >Г епс1; ппЫ с1опе; ВезСгоу(зс); епс1; 5.10.3 Построение и визуализация дерева Типичный пример программы, в которой осуществляется обход дерева: рекурсивная процедура ступенчатой распечатки дерева. Но сначала надо создать дерево.

Очевидно, непосредствешю ввести его из текстового файла непросто. Но мы глоступим также, как при вводе многочлепа в Наскалыгрограьгьгу дифференцирования: введем «коэффициенты дерев໠— значения узлов в некотором регулярном порядке. Рассмотрим программу построения дерева из и вершин, значения которых поступают из входного текстового файла 1прШ. Если нам нужно построить из этих вершин какоенибулсь дерево, то можно вернуло из них сделать корнем, вторую правым поддеревом, третью правым поддеревом правого полдерева, и т, д, В результате получим линейное дерево (список) максимальной глубины (и). Интереснее ооратная задача: построить из этих же вершин дерево минималыгой глубины.

Для этого при построении дерева надо добиться его равноъгерного запо>шения (ау, сплошгюе турнирное представ>гение!), размещая приходящие вершины поровну слева и справа от каждой вершины по следуннцему рекурсивному(!) правилу: ° взять одну вершину в качестве корня„ ° построить тем же способом левое поддерево с пл = п с11ь' 2 вершинами: ° построить тем же способом правое почдерево с и„= и — гл~ — 1 вершиной. Этот алгоритм строит идеально сбалансированное дерево, поскольку число вершин в его левых и правых поддеревьях отличается нс, более, чем на 1.

Соответствунпцая программа на Паскале: 275 ргодгаш 1г!гвС'1'гее(!прог, ошриг); 1' Н. Бирггл 7' Суре р - пос1е; ггос1е --- гесогс1 !сеу: сЬаг; !,г:р епс1; айаг и: шСедег; гооС: р; ГппсС1оп Ьи!!с!Сгее(п: шСедег): р; айаг пос1е: р„ х, п!, ггг: шСецег; Ьеа:ш 1 посгпроенис идеально сба.лансглрованного дерева 7' Ы и:= О СЬеп пос1е:=- и11 е1ве Ьецш !' распределение вершин налево и направо 3 п1:== и с1Ь 2; пг: п — п1 — 1: геас1(х); пелгт!пос1е); ж1СЬ пос1е" с!о Ьедш 1сеу: х; !' псрепорученив построения двум по,лудсрсвьям гг 1: Ьи!1с1Сгее(п1): г: — Ьш 1с1Сгее (пг) епс1; епс1:, Ьи! !г1Сгее: — по с!е епс1; (Ьиг1ЙСтвс) ргосес1ше рг!пСГгее(С: р: Ь: шСедег); Ьееш !' спггуггеггнатая печать г7срсва с отстаупом„равнгям глубине узла гг 11 ! <> ш1 СЬеп ллг1СЬ С с1о Ьедш рг1псггее (1, Ь вЂ”; 1); ллг1Се1п('„': Ь вЂ”: 1, 1сеу: 3); рг!пСггее(г, Ь вЂ” , '1) епс1; епс1:, епс1; (ртлпССтсеу Ь ерш (ртоутат) геас1 !гг); гоог; — Ьп1!с!Сгее (п); ргппггее (гооС.

0) 1 (р'оу / Если на вход этой программы подать последовательность 21 8 9 11 15 19 20 21 7 3 2 1 5 6 4 13 14 10 12 .!7 16 18 то будет построено идеально сбалансированное дерево из 21 вершины: Программа напечатает т. н. АВСП-визуализацию дерева, лежащего на боку и без графических излишеств — ребер и вершинных кружков, но с сохранением топологии. Простота и ясность этой рекурсивной программы лучшее доказательство уместности рекурсии, рекурсия выполнения хорошо отражает рекурсия> структуры дерева.

В мелочах тоже все гладко: дерево из 0 элементов не строится и нс печатается. 5.10.4 Деревья выражений. Разнофиксные формы записи выра- жений Обходя дерево выражения разными способами, мы получим три различные очереди вершин ~43~: ° КЛП: ~ + а / Ь с — с1 ~ е Х; еЛКП а+Ь/сФс1 — еФХ; ° ЛПК: а Ь с / + с1 е Х Ф вЂ” Ф. которые представляют собой пи что иное, как широко используемые в информатике различные формы записи выражений: префиксную 1ассемблер, код операции ~г,еред (1>ге1 операндами, называемую также польской), привычную инфикспую (математическую, знак операции мелсду (гп) операндами), по без скобок, задающих порядок выполнения операций, и постфиксную (обратнун> польскук>). БесскоГх>чная форма записи представляет собой линейную последовательность действий, пригодную для выполнения обычным фон Неймановским кокшьютером, История бесскобочной записи такова: 277 «Польский математик и логик Ян Лукагпевич печатал в 1920 г.

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

Таким образом, обычная запись А -1 В провратилась в запись 1 А В» 186~. Рассмотрим программу построения и распечатки дерева выражения по его линейной скобочной (инфиксной) записи. ргоатагп ехрг2Сгее(шрпС, опСрп! ); /Лебедев А. В.) / Синтаксис выраотсения ехрт. — > Сегтгт / ехрг «- Сегта / етрг — Сегт Сегт — /асс / Сегт « /асС / Сетт,' /асС /асС вЂ” > /ехрг) / с1гдИ / 1еССег дтутй — > 0 / 1 / й / 3 / 4 / 5 / б / 7 / 8 / 9 1еССег — > а / 6 / Суре Сгее — "пос?е; пос1е - гесогс1 с1аса: сЬаг; 1, г: Сгее; епс1; ттаг ехрг?гее: тгее; ГппсС1оп 1яа1тппп(с?т: сЬаг): Ьоо1еап; Ьеи1п 1аа1пптп:-- ((с?т >-- 'а') апс1 (с?т <-- 'х')) ог ((с1т >-- 'О') апс1 (сй <-- '9')/ епс1; ГппсС1оп п1а1сепос1е(с: сЬаг: 1, г: Сгее): Сгее; ттаг С: Сгее; Ьеи1п пеи ®: С х1аса х с; С ".!: — 1; С .г:- 278 го а1сеп ос1е: епс1; ргосес1пге с1евСгоусгес(С: 1гве); чаг р: ггво; Ьефп ( рекурсивно — итеративное уничтонсение дерева) (рекурсивный спуск, влево внутри итперптивноао спуска вправо) жЬ11е С <> ги1 с1о Ьефп с1евтгоусгес1С .11; р: — С; Ст-С .г„ Йврове 1р~ епс1; епс1; ргосес1ш е рг1пССгее11,: Сгее); ргосес1пге рг1пС(С: Сгее; СаЬ: шСедег); чаг 1: шСедег; Ьедш 1Г г .г <> п11 СЬеп рг1пй1С .г, Сао -, Ц; Гог 1 и- О Со гаЬ вЂ” 1 с1о тчг1Се(' '); юг1Се1п1С .с1а!а); Г С .1 <> п11 СЬеп рг1п11С .1, СаЬ '- 1); епс1:, (полурекурсавная версия процедуры распечатка: рекурсивный спуск по правой ветке сочетается с итеративным по левой) (ртосЫите ртт1(1: Стев; СаЬ: 1пГедех); иат 1: 1п8едет; Ьедгп тереаС ю( С ".

т < > и Н У~еп рт1пЦ(1 х, Саб + 1); 1от 1:= (! Со СаЬ вЂ” 1 до гатгсе (' гопсе1п (С ". Наса); Саб::=- СаЬ 1„. ипСЙ С --- п11; Ьед1п (уменьшим вложенность рекурсии( 11' С <> ш! СЬеп ргшССС, О); епс1; ГппсСюп расее: сгее; ( разбор вы раоюения / чаг сЬ: сЬаг; СппсСюп ехрс: Сгее; 1осжагс1; ( разбор подвыражен я ~С (опережающее обаяв. ление процедуры для. косвенной рекурси'а егрг — > Сегт — > (асс — > екрг,с СппсС1оп 1асС: сгее; ( разбор множителя делимого~'делителя ( Ьефп геас1 ссЬ); 11' сЬ =- 'л ' СЬеп Ьед1п ( множитель содержит подвыражение ~С ГасС:==- ехрт; ( Ц сй <'> ')' й,еп диагностика отсутствия закрывающей скобки3 епс1 е1ае 11' 1аа1ппспСсЬ) СЬеп 1асс: — спа1сессос1еСсЬ, ш1, ш1) ( создание терминальной вершины, (листа) для переменной или константы 3 ( е1зе диагносспика некоррекспной .литеры) епс1; ЙшсСюп Сегпш Сгсе; ( Разбор слагаемого~'уменьшаамогогсгы читаемого г~ чаг Сш: Сгее; с1отп:: Ьоо1еап:, Ьее1п Спс: — брасс; с1опе:-- Га1ве1 лчЬ11е поС ео!п апс1 поС с1опе с1о Ьефп геас1 (сЬ); сс ссЬ -- 'э') ог ссЬ -- '(') сЬеп спс:-- спа1сепос1еСс1ц сш, 1асс) ( Подвеска поддерева подвыражения с рекурсивным разбором очередного подвъсражения ~ е1ве с1опе: — Сгпе; епс1., Сепп:=- сш; епс1; 280 КпгьсСюп ехрг: ( разбор тюдвыроьнсенияс рсьнее от,лоэюенное описание тпела процедуры ) чаг ех: 1гее; с1опе: Ьоо1еап; Ьедш сх; 1епи; с1опе: Га1не; ъч1п1е поС ео1п апс1 поС с1опе с1о Ьедш 11' 1с1ь - '-'') ог 1с1ь =- ' — ') СЬеп ех: — ьпа1.епос1еьс1ц ех, 1епп) ( Подвеска поддерева подвыражения.

Характеристики

Тип файла
DJVU-файл
Размер
675,15 Kb
Тип материала
Высшее учебное заведение

Список файлов лекций

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6309
Авторов
на СтудИзбе
313
Средний доход
с одного платного файла
Обучение Подробнее